【发布时间】:2018-04-14 20:30:01
【问题描述】:
我有一个 HTML page,其中包含一个用于将文件上传到 SmartFile 的表单。下面是我用来将 Unity 游戏中的文件上传到此 url 的一段 C# 代码。
WWWForm fileForm = new WWWForm();
string[] files = Directory.GetFiles(".", "*.txt");
fileForm.AddField("file", files[0]);
WWW www = new WWW("https://file.ac/xySSFOicMMk", fileForm);
不幸的是,它导致了以下异常。这里有什么问题?
发送分析时出现连接错误...错误:415 不支持 媒体类型 UnityEngine.Debug:LogError(Object) c__Iterator0:MoveNext() (在 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,它导致了
通用/未知 HTTP 错误(400 响应代码)
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' orList`
【问题讨论】:
-
files[0]的值是多少? -
我正在上传当前目录中的所有 txt 文件。我无法发布上面的整个代码,它在这里 - pastebin.com/FLLaWT79
-
files[i] === C:\Users\vipin\OneDrive\Documents\UnityProjects\PhD Research\AffectiveComputingGames\Bean Man with Affectiva\Bean Man - 4-13-2018-19-44 -3-ENGAGEMENT-DUMP.txt
files[i] === C:\Users\vipin\OneDrive\Documents\UnityProjects\PhD Research\AffectiveComputingGames\Bean Man with Affectiva\Bean Man - 4-13-2018-19-44-3.txt -
问题出在您的服务器端 file.ac/xySSFOicMMk 。它甚至没有表单脚本并给出 500 错误错误。您的其他链接mouse-backtracker.herokuapp.com/GESFileUpload.html 很好,如果您查看源代码,您将看到表单代码。令人遗憾的是,我提到的错误 url 的操作链接 file.ac/xySSFOicMMk 。我无法使用我的 Chrome 浏览器通过 mouse-backtracker.herokuapp.com/GESFileUpload.html 上传文件,因此您也无法通过代码上传文件。修复它并确保您可以从浏览器上传代码然后通过代码尝试
-
url 抛出 500 错误,但您实际上可以使用该链接上传文件,尽管出现 500 错误。我已经使用它完成了多次上传,所以它工作正常。我得到了您使用链接上传的 test.png - file.ac/sU1paNXY4do
标签: c# forms unity3d webrequest