Windows runtime 在Windows 8.1中使用BackgroundUploader进行多部分/相关上载

Windows runtime 在Windows 8.1中使用BackgroundUploader进行多部分/相关上载,windows-runtime,windows-8.1,windows-phone-8.1,multipart,background-transfer,Windows Runtime,Windows 8.1,Windows Phone 8.1,Multipart,Background Transfer,我想通过windows 8.1中的BackgroundUploader使用Multipart/related内容类型上载文件 我的代码如下 BackgroundUploader uploader = new BackgroundUploader(); uploader.SetRequestHeader("Content-Type", "multipart/related; boundary=foo_bar_baz"); uploader.Method = "POST"; // Create u

我想通过windows 8.1中的BackgroundUploader使用Multipart/related内容类型上载文件

我的代码如下

BackgroundUploader uploader = new BackgroundUploader();
uploader.SetRequestHeader("Content-Type", "multipart/related; boundary=foo_bar_baz");
uploader.Method = "POST";

// Create upload content
List<BackgroundTransferContentPart> parts = new List<BackgroundTransferContentPart>();

// File metadata
var part = new BackgroundTransferContentPart();
part.SetHeader("Content-Type", "text/plain");
part.SetText(file.DisplayName);
parts.Add(part);

// File
// Here file is of type StorageFile
part = new BackgroundTransferContentPart();
part.SetHeader("Content-Type", file.ContentType);
part.SetFile(file);
parts.Add(part);

UploadOperation upload = await uploader.CreateUploadAsync(new Uri("upload_url",UriKind.Absolute), parts);

await upload.StartAsync().AsTask(cts.token);  // cts is CancellationTokenSource
BackgroundUploader uploader=新的BackgroundUploader();
SetRequestHeader(“内容类型”,“多部分/相关;边界=foo_bar_baz”);
uploader.Method=“POST”;
//创建上传内容
列出零件=新列表();
//文件元数据
var part=新的BackgroundTransferContentPart();
第.SetHeader部分(“内容类型”、“文本/普通”);
part.SetText(file.DisplayName);
部分。添加(部分);
//文件
//这里的文件是StorageFile类型
part=新的BackgroundTransferContentPart();
part.SetHeader(“内容类型”,file.ContentType);
part.SetFile(文件);
部分。添加(部分);
UploadOperation upload=等待uploader.CreateUploadAsync(新Uri(“upload\u url”,UriKind.Absolute),parts);
等待upload.StartAsync().AsTask(cts.token);//cts是CancellationTokenSource
然而,当我运行这段代码时,我得到一个异常

WinRT信息:“边界”:如果设置了“内容类型”标题, 边界不能为空,并且必须与中设置的边界匹配 “内容类型”标题


我的代码中有什么错误/缺失?

如果要传递内容部分列表,则无需设置内容类型标题。它是自动设置的

但是,如果您坚持这样做,请尝试:

uploader.SetRequestHeader(
    "Content-Type", 
    "multipart/form-data; boundary=\"foo_bar_baz\"");
更新:


尝试使用带有四个参数的
CreateUploadAsync
重载,其中第四个参数是边界。请参见此处:

如果使用带有四个参数的CreateUploadAsync,则以下内容可能会有所帮助:

var uploader = new BackgroundUploader();
uploader.SetRequestHeader("Content-Type", "multipart/form-data; charset=utf-8; boundary=0xKhTmLbOuNdArY-3770FB3C-534D-4E6B-9BE0-392FDA960F7B");

var upload = await uploader.CreateUploadAsync(uri, parts, "form-data", "0xKhTmLbOuNdArY-3770FB3C-534D-4E6B-9BE0-392FDA960F7B");

await upload.StartAsync();
在“SetRequestHeader”中设置边界,不带“”(引号)。
稍后将相同的边界设置为CreateUploadAsync的最后一个参数。

使用多部分/表单数据也会产生相同的错误。因为,服务器要求多部分/相关,所以我不能忽略它