WebAPI:上传图片&获取字节数组

时间:2013-08-31 18:02:03

标签: asp.net-mvc file-upload asp.net-web-api mime-types

我希望用户能够通过我的应用程序上传文件。我没有数据库访问权限,所有数据调用都通过另一个人正在编写的Web服务完成。我需要保护网络服务,所以我已经消费了它和它通过WebAPI暴露它,&添加了OAuth安全性。

现在我的问题。

我写了以下内容。

        public Task<FileResult> Post()
        {
             if (Request.Content.IsMimeMultipartContent())
             {     
                  var task = Request.Content.ReadAsByteArrayAsync().ContinueWith(
                         o =>
                        {
                            var result = this.Client.UploadPicture(this.UserId, o.Result);

                            if (result.ResultCode == 0)
                            {
                                return new FileResult()
                                {
                                    Message = "Success",
                                    FileId = result.ServerId
                                };
                            }

                       throw new HttpResponseException(...);
                  });

              return task;
             }
        ...
       }

对于WebAPI而言,我几乎是一个菜鸟。多线程(我不知道为什么这需要处理异步?我确定有一个原因,但是现在我只是喜欢一个有效的例子并且为了之后的原因...)。

我的代码基于一些R&amp; D&amp;我在网上找到的样本,但我没有遇到过像我需要完成的情况......但是我似乎并没有做出与众不同的事情......

将文件上传到服务器,并将图像byte []对象传递给sql或其他服务?

在这一行

    var result = this.Client.UploadPicture(this.UserId, o.Result);

我正在上传一个byte []数组....

然后(检索方法有效,我设法检索并查看测试图像)

当检索我上传的“图像”的字节数组时,我得到一个idk数组... EG,我得到了一些有效的结果,但它不是没有图片。这让我相信上传的数据是虚假的:|

O_O 如何获取图像字节[]?

1 个答案:

答案 0 :(得分:2)

Mime Multipart不仅仅是你的字节数组。它还有元数据和边界内容。您需要将其视为MultiPartContent,然后从中提取图像字节数组。 菲利普有一篇关于这个主题的博客文章here

相关问题