Поместите файл в URL с помощью Http Utils в виде многочастной формы - PullRequest
1 голос
/ 28 апреля 2020

Можно ли положить файл с помощью Http Utils в виде многокомпонентной формы?

Это то, что я пытался:

var response = $"{_baseUrl}{address}".PutBytesToUrl(File.ReadAllBytes(filePath), "image/jpeg", "*/*",
    requestFilter: req =>
    {
        req.Headers["x-aws-acl"] = "private";
        req.Headers["content_type"] = "image/jpeg";
        req.Headers["X-Shopify-Access-Token"] = _accessToken;
    });

Запрос выполняется с 200, но API (Shopify ) не имеет изображения.

Я попытался запустить запрос в почтальоне, и с почтальоном запрос работает, и shopify имеет изображение после.

Я использовал webhook.site, чтобы увидеть, что отличается был в http utils и почтальоне, и, кажется, почтальон отправляет многокомпонентную закодированную форму.

Вот заголовки http utils, которые отправляются без изображения:

enter image description here

Вот заголовки почтальона:

enter image description here

Есть ли способ получить утилиты http для отправки изображения в виде данных из нескольких частей?

1 Ответ

1 голос
/ 28 апреля 2020

Чтобы загрузить файлы как multipart/form-data, вам нужно будет использовать API UploadFile , который принимает перегрузку для указания, какой метод HTTP использовать, например:

var webReq = (HttpWebRequest)WebRequest.Create("http://example.org/upload");
webReq.Accept = MimeTypes.Json;
using var stream = uploadFile.OpenRead();
webReq.UploadFile(stream, uploadFile.Name, MimeTypes.GetMimeType(uploadFile.Name), 
    method:"PUT");
...