Generic/unknown 将文件上传到远程表单时出现 HTTP 错误
Generic/unknown HTTP error when uploading files to a remote form
我有一个 HTML page,带有用于将文件上传到 SmartFile 的表单。下面是一段 C# 代码,我用它来将文件从我在 Unity 中的游戏上传到 url.
WWWForm fileForm = new WWWForm();
string[] files = Directory.GetFiles(".", "*.txt");
fileForm.AddField("file", files[0]);
WWW www = new WWW("https://file.ac/xySSFOicMMk", fileForm);
不幸的是,它导致了以下异常。这里有什么问题?
Connection error while sending analytics... Error:415 Unsupported
Media Type UnityEngine.Debug:LogError(Object)
c__Iterator0:MoveNext() (at Assets/Survey/Survey.cs:99)
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
更新 1:- 我将第 3 行更改为 fileForm.AddBinaryData("file", File.ReadAllBytes(files[i]), files[i], "text/plain");
我没有再收到错误,但仍然看不到文件正在上传,即使 www.isDone
返回 true。
更新 2:- 也尝试了 UnityWebRequest API,结果是
Generic/unknown HTTP error (400 response code)
List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
byte[] bytes = File.ReadAllBytes(files[0]);
files[0] = files[0].Replace(@".\","");
formData.Add(new MultipartFormFileSection("file", bytes, files[0], "text/plain"));
StartCoroutine(UploadFile(formData));
IEnumerator UploadFile(List<IMultipartFormSection> formData)
{
UnityWebRequest www = UnityWebRequest.Post("https://file.ac/xySSFOicMMk", formData);
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
}
else
{
Debug.Log("Form upload complete!");
}
}
UnityWebRequest.Post
似乎也不适用于 Unity 版本 2017.3.1f1(64 位)
中的 WWWForm' or
List`
将 HttpWebRequest
与找到的解决方案一起使用 here alongwith this to fix the certificate error in Unity and finally had some peace of mind. Entire solution is posted here - https://pastebin.com/wNQ46s0H
似乎为了让 WWWForm 正常工作,您的表单中需要同时包含二进制和非二进制数据 -
我有一个 HTML page,带有用于将文件上传到 SmartFile 的表单。下面是一段 C# 代码,我用它来将文件从我在 Unity 中的游戏上传到 url.
WWWForm fileForm = new WWWForm();
string[] files = Directory.GetFiles(".", "*.txt");
fileForm.AddField("file", files[0]);
WWW www = new WWW("https://file.ac/xySSFOicMMk", fileForm);
不幸的是,它导致了以下异常。这里有什么问题?
Connection error while sending analytics... Error:415 Unsupported Media Type UnityEngine.Debug:LogError(Object) c__Iterator0:MoveNext() (at Assets/Survey/Survey.cs:99) UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
更新 1:- 我将第 3 行更改为 fileForm.AddBinaryData("file", File.ReadAllBytes(files[i]), files[i], "text/plain");
我没有再收到错误,但仍然看不到文件正在上传,即使 www.isDone
返回 true。
更新 2:- 也尝试了 UnityWebRequest API,结果是
Generic/unknown HTTP error (400 response code)
List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
byte[] bytes = File.ReadAllBytes(files[0]);
files[0] = files[0].Replace(@".\","");
formData.Add(new MultipartFormFileSection("file", bytes, files[0], "text/plain"));
StartCoroutine(UploadFile(formData));
IEnumerator UploadFile(List<IMultipartFormSection> formData)
{
UnityWebRequest www = UnityWebRequest.Post("https://file.ac/xySSFOicMMk", formData);
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
Debug.Log(www.error);
}
else
{
Debug.Log("Form upload complete!");
}
}
UnityWebRequest.Post
似乎也不适用于 Unity 版本 2017.3.1f1(64 位)
WWWForm' or
List`
将 HttpWebRequest
与找到的解决方案一起使用 here alongwith this to fix the certificate error in Unity and finally had some peace of mind. Entire solution is posted here - https://pastebin.com/wNQ46s0H
似乎为了让 WWWForm 正常工作,您的表单中需要同时包含二进制和非二进制数据 -