我如何获得一个MultipartMemoryStreamProvider的文件内容作为字节数组? [英] How do I get the file contents of a MultipartMemoryStreamProvider as a byte array?

查看:1261
本文介绍了我如何获得一个MultipartMemoryStreamProvider的文件内容作为字节数组?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经创建了文件上传使用FORMDATA一个Web API控制器的组成部分。

我如何从MultipartMemoryStreamProvider文件内容作为字节数组?

这是Web API方法

 公共任务<&IEnumerable的LT; FileModel>>邮政()
   {
     如果(Request.Content.IsMimeMultipartContent())
        {
            VAR streamProvider =新MultipartMemoryStreamProvider();
            VAR任务= Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith<IEnumerable<FileModel>>(t = GT;
            {                如果(t.IsFaulted || t.IsCanceled)
                {
                    抛出新的Htt presponseException(的HTTPStatus code.InternalServerError);
                }                FileDataBO FILEDATA;
                变种的fileInfo = streamProvider.Contents.Select(ⅰ= GT; {
                    //保存到数据库
                    FILEDATA =新FileDataBO();
                    filedata.FileName = i.Headers.ContentDisposition.FileName;
                    filedata.FileType =JPEG;                    //如何获得文件内容的位置?它应该的byte []
                    //filedata.FileContent =?                    //去做
                    //_fileDataService.SaveFile(filedata);                    返回新FileModel(i.Headers.ContentDisposition.FileName,2048);
                });
                返回的fileInfo;
            });            返回任务;
        }
        其他
        {
            抛出新的Htt presponseException(Request.CreateResponse(的HTTPStatus code.NotAcceptable,这个请求的格式不正确));
        }
   }


解决方案

您应该能够通过做获取内容 i.ReadAsByteArrayAsync()

I have created a component that uploads files to a Web API controller using FormData.

How do I get the file contents from the MultipartMemoryStreamProvider as a byte array?

Here is the Web Api method

   public Task<IEnumerable<FileModel>> Post()
   {             
     if (Request.Content.IsMimeMultipartContent())
        {            
            var streamProvider = new MultipartMemoryStreamProvider();
            var task = Request.Content.ReadAsMultipartAsync(streamProvider).ContinueWith<IEnumerable<FileModel>>(t =>
            {

                if (t.IsFaulted || t.IsCanceled)
                {
                    throw new HttpResponseException(HttpStatusCode.InternalServerError);
                }

                FileDataBO filedata;
                var fileInfo = streamProvider.Contents.Select(i => {
                    //save to db
                    filedata = new FileDataBO ();
                    filedata.FileName = i.Headers.ContentDisposition.FileName;
                    filedata.FileType = "jpeg";

                    // HOW TO GET FILE CONTENT HERE??? IT SHOULD BYTE[]
                    //filedata.FileContent = ???

                    //TODO
                    //_fileDataService.SaveFile(filedata);    

                    return new FileModel(i.Headers.ContentDisposition.FileName, 2048);
                });
                return fileInfo;
            });

            return task;
        }             
        else
        {
            throw new HttpResponseException(Request.CreateResponse(HttpStatusCode.NotAcceptable, "This request is not properly formatted"));
        }       
   }

解决方案

You should be able to get the content by doing i.ReadAsByteArrayAsync()

这篇关于我如何获得一个MultipartMemoryStreamProvider的文件内容作为字节数组?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆