如何在 Unity 中将文件附加到表单?
How to attach a file to a form in Unity?
我目前正在尝试使用附加到表单的文件发出 post 请求,但我发现它不是我附加的文件,而只是文件的路径。
我的问题是如何获取此文件并将其附加到表格中?
到目前为止,这是我的代码:
string altPath = Path.Combine(Application.persistentDataPath, "nice-work.wav");
List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
formData.Add(new MultipartFormFileSection("wavfile", altPath));
UnityWebRequest uwr = UnityWebRequest.Post(url, formData);
yield return uwr.SendWebRequest();
if (uwr.isNetworkError)
{
Debug.Log("Error While Sending: " + uwr.error);
}
else
{
Debug.Log("Received: " + uwr.downloadHandler.text);
}
变量 altPath 是路径而不是文件,这会导致 post 请求失败。
如果您查看MultipartFormFileSection
,您当前使用的构造函数是
MultipartFormFileSection(string data, string fileName)
这当然不是你想做的。
您宁愿必须实际阅读相应的文件内容,例如只需使用 File.ReadAllBytes
...
var multiPartSectionName = "wavfile";
var fileName = "nice-work.wav";
var altPath = Path.Combine(Application.persistentDataPath, fileName);
var data = File.ReadAllBytes(altPath);
var formData = new List<IMultipartFormSection>
{
new MultipartFormFileSection(multiPartSectionName, data, fileName)
};
...
或取决于您的服务器端需求
...
var formData = new List<IMultipartFormSection>
{
new MultipartFormFileSection(fileName, data)
};
...
尽管请记住 ReadAllBytes
是一个同步(阻塞)调用,对于较大的文件,您可能更愿意使用一些异步方法。
我目前正在尝试使用附加到表单的文件发出 post 请求,但我发现它不是我附加的文件,而只是文件的路径。
我的问题是如何获取此文件并将其附加到表格中?
到目前为止,这是我的代码:
string altPath = Path.Combine(Application.persistentDataPath, "nice-work.wav");
List<IMultipartFormSection> formData = new List<IMultipartFormSection>();
formData.Add(new MultipartFormFileSection("wavfile", altPath));
UnityWebRequest uwr = UnityWebRequest.Post(url, formData);
yield return uwr.SendWebRequest();
if (uwr.isNetworkError)
{
Debug.Log("Error While Sending: " + uwr.error);
}
else
{
Debug.Log("Received: " + uwr.downloadHandler.text);
}
变量 altPath 是路径而不是文件,这会导致 post 请求失败。
如果您查看MultipartFormFileSection
,您当前使用的构造函数是
MultipartFormFileSection(string data, string fileName)
这当然不是你想做的。
您宁愿必须实际阅读相应的文件内容,例如只需使用 File.ReadAllBytes
...
var multiPartSectionName = "wavfile";
var fileName = "nice-work.wav";
var altPath = Path.Combine(Application.persistentDataPath, fileName);
var data = File.ReadAllBytes(altPath);
var formData = new List<IMultipartFormSection>
{
new MultipartFormFileSection(multiPartSectionName, data, fileName)
};
...
或取决于您的服务器端需求
...
var formData = new List<IMultipartFormSection>
{
new MultipartFormFileSection(fileName, data)
};
...
尽管请记住 ReadAllBytes
是一个同步(阻塞)调用,对于较大的文件,您可能更愿意使用一些异步方法。