multipart/form-data пытается загрузить файл на сервер

99
9

Я разрабатываю клиент для отправки изображений на сервер с использованием multipart/form-data, мой партнер использует mac и я на win8.

я отправляю все так, как это работает на Mac, но с клиентской стороны он не может пройти через веб-сервис, и сообщение об ошибке: "Плохое тело содержимого",

это мой код:

string boundary = "96c334567890";
byte[] sub = AuxiliaryMethods.ReadFileInCloudStorage(urlImg, i);

//POST
// Create a request using a URL that can receive a post.
WebRequest request = (HttpWebRequest)WebRequest.Create(urlImgPost);

// Create POST data and convert it to a byte array.
string strAux = "--" + boundary + "\r\n" +
"Content-Disposition: form-data; name=\"file\"; filename=\"photo" + i + ".jpg\"" + "\r\n" +
"Content-Type: image/jpeg" + "\r\n\r\n" +
System.Text.Encoding.UTF8.GetString(sub) + "\r\n" +
boundary + "--";
byte[] byteArray = Encoding.UTF8.GetBytes(strAux);

// Set the Method property of the request to POST.
request.Method = "POST";
request.Headers.Add("Authorization: Token token=token");
// Set the ContentLength property of the WebRequest.
request.ContentLength = byteArray.Length;
// Set the ContentType property of the WebRequest.
request.ContentType = "multipart/form-data; boundary="+boundary;

и мой заголовок и тело должны выглядеть примерно так:

POST https://apidev.test.pt/images HTTP/1.1
Authorization: Token token=token
Content-Type: multipart/form-data; boundary=96c334567890
Host: apidev.test.pt
Content-Length: 764939

--96c334567890
content-disposition: form-data; name="file"; filename="photo1.jpg"
content-type: image/jpeg

(image binary data)

96c334567890--

должен ли я добавлять что-то, потому что я нахожусь в системе Windows или моя просьба сделана неправильно? это отформатировано с помощью RFC2388

спросил(а) 2021-01-25T19:32:23+03:00 5 месяцев назад
1
Решение
77

Чтобы загрузить файл на сервер

strBoundary = AlphaNumString(32)

strBody = "--" & strBoundary & vbCrLf

strBody = strBody & "Content-Disposition: form-data; name=""" & UploadName & """; filename=""" & filename & """" & vbCrLf
strBody = strBody & "Content-Type: " & MimeType & vbCrLf
strBody = strBody & vbCrLf & strData
strBody = strBody & vbCrLf & "--" & strBoundary & "--"

Length = Len(strBody)

strHTTP = "POST " & DestUrl.URI & "?" & DestUrl.Query & " HTTP/1.0" & vbCrLf
strHTTP = strHTTP & "Host: " & DestUrl.Host & vbCrLf
strHTTP = strHTTP & "Content-Type: multipart/form-data, boundary=" & strBoundary & vbCrLf
strHTTP = strHTTP & "Content-Length: " & Length & vbCrLf & vbCrLf
strHTTP = strHTTP & strBody

ответил(а) 2021-01-25T19:32:23+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема