如何在 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 是一个同步(阻塞)调用,对于较大的文件,您可能更愿意使用一些异步方法。