#c# #http #unity3d
#c# #http #unity3d
Вопрос:
Я пытаюсь загрузить изображение, MultipartFormFileSection
которое выдает мне внутреннюю ошибку сервера Http 500.
IEnumerator Upload()
{
List<IMultipartFormSection> pictureData = new List<IMultipartFormSection>();
pictureData.Add(new MultipartFormFileSection("file", File.ReadAllBytes(ImageCapture.imageSavePath), "imageName", "image/jpg"));
pictureData.Add(new MultipartFormFileSection("userId", "17ac4c482dcdd"));
UnityWebRequest www = UnityWebRequest.Post(UploadImage_URL, pictureData);
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
}
else
{
Debug.Log("Form upload complete! " www.downloadHandler.text);
}
}
Ответ №1:
По неизвестным мне причинам это сработало путем замены MultipartFormFileSection
на WWWForm
.
Ниже приведен рабочий код.
IEnumerator Upload()
{
WWWForm form = new WWWForm();
form.AddBinaryData("file", File.ReadAllBytes(Application.streamingAssetsPath "/test.jpg"), "imageName.jpg");
form.AddField("userId", "17ac4c482dcdd");
UnityWebRequest www = UnityWebRequest.Post(UploadImage_URL, form);
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
}
else
{
Debug.Log("Form upload complete! " www.downloadHandler.text);
}
}
Комментарии:
1. Действительно, странно. Как вы можете видеть в API для
MultipartFormSection
перегрузки, которую он автоматически выбираетContent-Type = multipart/form-data
, в то время как дляWWWForm
перегрузки он использует тот, который определен вWWWForm
which"application/x-www-form-urlencoded" for normal forms and "multipart/form-data" for forms containing data added using AddBinaryData.
, поэтому он должен быть таким же, верно?2. да, вы правы. В моем предыдущем проекте я использовал
MultipartFormSection
, и это сработало. Но на этот раз мне нужно добавить несколько полей, идентификатор и имя, поэтому он начинает выдавать ошибку.