Я пытаюсь загрузить несколько файлов с помощью 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>