在不使用表单的情况下将图像上载到Web API

时间:2013-06-03 18:35:52

标签: c# asp.net-web-api

我在获取请求内容方面遇到了WebAPI问题。我正在使用.NET 4解决方案,并希望保存从客户端发出的图像。

客户端代码是

var request = (HttpWebRequest)WebRequest.Create(Url);
request.Method = WebRequestMethods.Http.Post;
using (var stream = request.GetRequestStream())
{
  File.OpenRead(@"C:\Users\dylan_000\Pictures\image.png").CopyTo(stream);
  stream.Flush();
}
var response = request.GetResponse();

WebApi方法看起来像这样

public Task<bool> Image()
{
  return Request.Content.ReadAsStreamAsync().ContinueWith<bool>(t =>
    {
        using (var writer = File.Create("this was uploaded.png"))
                        {
                            (t.Result as Stream).CopyTo(ms);
                            writer.Flush();
                        }
        return true;
    });
}

流的大小不匹配,保存的图像无效。

上面粘贴的代码足以复制我的情况,显然有更好的方法来保存图像,但在我的情况下它会进行进一步处理。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

我无法重复您的问题。顺便说一下,我在尝试之前修改了以下突出显示的代码。这里的'ms'是什么?听起来像记忆流?

(t.Result as Stream).CopyTo(作家);

答案 1 :(得分:0)

这里的课程倾斜, 为了绕过授权,我手动将cookie插入到请求中。看起来我在做这个时就被火腿吝啬了,这就是问题的原因。对于想要使用WebAPI上传图像的任何人,上面的代码都可以正常工作。 (请务必保持请求清洁)