C# Windows 8 xaml应用程序问题,MultipartFormDataContent未上载图像

C# Windows 8 xaml应用程序问题,MultipartFormDataContent未上载图像,c#,httpwebrequest,winrt-xaml,C#,Httpwebrequest,Winrt Xaml,我正在尝试从用户本地文件夹上载图像文件 我编写了这个方法,获取文件流和url,然后上传它。 问题是,虽然我没有收到任何错误,服务器上的映像也有自己的id等,但它看起来是空的 我假设我上传的流有问题,当我在那里设置断点时,我看到了其中的字节,所以它不是空的 public static async Task<string> UploadImage(string url, StorageFile file) { HttpClient httpClient = new

我正在尝试从用户本地文件夹上载图像文件

我编写了这个方法,获取文件流和url,然后上传它。 问题是,虽然我没有收到任何错误,服务器上的映像也有自己的id等,但它看起来是空的

我假设我上传的流有问题,当我在那里设置断点时,我看到了其中的字节,所以它不是空的

public static async Task<string> UploadImage(string url, StorageFile file)
    {
        HttpClient httpClient = new HttpClient();
        httpClient.DefaultRequestHeaders.Add("Authorization", authKey);
        try
        {   
            IRandomAccessStream readStream = await file.OpenAsync(FileAccessMode.Read);
            MultipartFormDataContent form = new MultipartFormDataContent();
            form.Add(new StringContent("name"), "myphoto");
            var content = readStream.AsStream();
            form.Add(new StreamContent(content));
            HttpResponseMessage response = await httpClient.PostAsync(url, form);
            string res = response.Content.ToString();
            return res;
        }
        catch (HttpRequestException hre)
        {
            return string.Empty;
        }
        catch (Exception ex)
        {
            return string.Empty;   
        }            
    }
公共静态异步任务上载映像(字符串url、存储文件)
{
HttpClient HttpClient=新HttpClient();
httpClient.DefaultRequestHeaders.Add(“授权”,authKey);
尝试
{   
irandomaccesstream readStream=await file.OpenAsync(FileAccessMode.Read);
MultipartFormDataContent form=新的MultipartFormDataContent();
表格。添加(新内容(“名称”),“我的照片”);
var content=readStream.AsStream();
表格。添加(新的StreamContent(内容));
HttpResponseMessageResponse=等待httpClient.PostAsync(url,表单);
string res=response.Content.ToString();
返回res;
}
捕获(HttpRequestException hre)
{
返回字符串。空;
}
捕获(例外情况除外)
{
返回字符串。空;
}            
}

毕竟这是一个web服务问题

不确定是否如此简单,但看看类似代码(但不同错误)的帖子,我发现StreamContent构造函数使用了增加长度的重载。另外,您是否运行了Fiddler来确认字节实际上在POST http数据包中?您是对的,字节不在http数据包中。现在我修改了它,添加了新的ByteArrayContent(bytes2,0,bytes2.Length),而不是streamcontent,它包含字节。不幸的是,现在我得到一个404错误。我想我必须以某种方式将内容类型添加到image/jpeg中,这可能取决于您要使用的服务以及它如何执行请求路由这是服务的一个问题,现在它可以工作了!这不是一个应用程序问题。我现在应该删除这个问题吗?不,我会跟进并用新信息回答你自己的问题。服务端上的一个错误正以这种方式表现出来,这一事实对于在其服务上遇到类似错误场景的其他人来说仍然是有用的信息。