我正在尝试使用 UnityWebRequest.Post() 上传多个文件,这是我的代码。
public void UploadFiles()
{
string[] path = new string[3];
path[0] = "D:/File1.txt";
path[1] = "D:/File2.txt";
path[2] = "D:/File3.txt";
UnityWebRequest[] files = new UnityWebRequest[3];
WWWForm form = new WWWForm();
for (int i = 0; i < files.Length; i++)
{
files[i] = UnityWebRequest.Get(path[i]);
form.AddBinaryData("files[]", files[i].downloadHandler.data, Path.GetFileName(path[i]));
}
UnityWebRequest req = UnityWebRequest.Post("http://localhost/File%20Upload/Uploader.php", form);
yield return req.SendWebRequest();
if (req.isHttpError || req.isNetworkError)
Debug.Log(req.error);
else
Debug.Log("Uploaded " + files.Length + " files Successfully");
}
然而,文件是在目的地创建的,大小为 0 字节。
这是我的 Uploader.php 代码
<$php
$total = count($_FILES['files']['name']);
$uploadError = false;
for ( $i = 0; $i < $total; $i++)
{
$tmpFilePath = $_FILES['files']['tmp_name'][$i];
if ($tmpFilePath != "")
{
$newFilePath = "Uploads/".$_FILES['files']['name'][$i];
if (!move_uploaded_file($tmpFilePath, $newFilePath))
$uploadError = true;
}
}
if ($uploadError)
echo "Upload Error";
else
echo "Uploaded Successfully";
?>
我使用这个 HTML 示例作为参考。而在浏览器中,HTML 代码完美运行。Unity 中存在问题。
<form enctype="multipart/form-data" action="Uploader.php" method="POST">
Choose a file to Upload:
<input type="file" name="files[]" multiple="multiple" /><br>
<input type="submit" value="Upload File" />
</form>