Я уже ожидал, что он не найдет файл изображения, который вы хотите загрузить правильно.
Path.Combine(Application.persistentDataPath + "/TicketInformation/", "Pic001.png")
приводит к пути, подобному
| |
v v
C:\path\to\project\/TicketInformation/\Pic001.png
на окнах или
| |
v v
/path/to/project//TicketInformation//Pic001.png
на Linux или Android.
Его лучше использовать как
Path.Combine(Application.persistentDataPath, "TicketInformation", "Pic001.png")
и
Path.Combine(Application.persistentDataPath, "TicketInformation")
Следующий пункт: почему вы даже используете UploadHandlerRaw
, когда вы уже добавили данные в WWWForm
, так что мне кажется, что это не имеет большого смысла.
Вы должны удалить строку
wwwimageupload.uploadHandler = (UploadHandler)new UploadHandlerRaw(FileUpload);
Также обратите внимание, что File.ReadAllBytes
работает только на платформах Windows, поэтому в зависимости от цели сборки может потребоваться изменить способ чтения файла. Вы можете использовать UnityWebRequestTexture.GetTexture
также для чтения локальных файлов. Что-то вроде
public IEnumerator UploadTicketImage()
{
var folderPath = Path.Combine(Application.persistentDataPath, "TicketInformation");
var filepath = Path.Combine(folderPath, "Pic001.png");
byte[] FileUpload = null;
using (var www = UnityWebRequestTexture.GetTexture(filepath))
{
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
Debug.LogErrorFormat(this, "File loading failed with {0} - {1}", www.responseCode, www.error);
Debug.LogErrorFormat(this, "Couldn't read file at {0}", filepath);
yield break;
}
else
{
// file data successfully loaded
FileUpload = www.downloadHandler.data;
}
}
var form = new WWWForm();
// here you want the name the file should have on the server
// not a complete system path to file on your local device
// |
// |
// |
// And this is the field you will have |
// to access in php |
// | |
// v v
form.AddBinaryData("TotalTest", FileUpload, "Pic001.png", "image/png");
using (var www = UnityWebRequest.Post("https://111.111.111.1" + "/UploadTicketsImage.php?", form))
{
yield return www.SendWebRequest();
if (www.isNetworkError || www.isHttpError)
{
Debug.LogError(www.error);
}
else
{
Debug.Log(www.downloadHandler.text);
}
}
}
Наконец, я не эксперт по PHP. Afaik, вам нужно будет получить доступ к отправленному полю, например
$_FILES['TotalTest']
так вы называете поле TotalTest
в form.AddBinaryData
.
Также
if(isset($_POST["submit"]))
, вероятно, никогда не соответствует действительности, поскольку вы не установили его в WWWForm
(я могу ошибаться, и он устанавливается автоматически при отправке запроса).
Примечание: напечатано на смартфоне, поэтому никаких гарантий, но я надеюсь, что идея проясняется.