0

Я хочу, чтобы загрузить файл с помощью Multipart/связанные Content-Type с помощью BackgroundUploader в окнах 8,1Multipart/связанные загрузки с использованием BackgroundUploader в ОС Windows 8.1

Мой код выглядит следующим образом

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 

Однако, когда я запускаю этот код, я получаю сообщение об исключении

Информация об WinRT: 'граница': если t заголовок «Content-Type» установлен, граница не может быть пустой и должна соответствовать граничному набору в заголовке «Тип содержимого» .

Что является неправильным или отсутствует в моем коде?

ответ

0

Если вы передаете список частей контента, вам не нужно устанавливать заголовок Conent-Type. Он устанавливается автоматически.

Однако, если вы настаиваете на этом, попробуйте:

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

UPDATE:

Попробуйте использовать CreateUploadAsync перегрузку, которая принимает четыре параметра, где четвертый параметр является границей. Смотрите здесь: http://msdn.microsoft.com/en-us/library/ie/hh923975

+0

Использование multipart/form-data также дает такую ​​же ошибку. Поскольку сервер требует множественного/связанного, я не могу его опустить –

1

Если вы используете 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.

Смежные вопросы