Попытка загрузить скриншот из Unity на веб-сервер - PullRequest
2 голосов
/ 19 марта 2019

В настоящее время я пытаюсь загрузить снимок экрана, снятый с Unity, и разместить его на своем веб-сервере, сохраняя в папке (Я использую XAMPP для проверки этого)

Я могу сделать снимок экрана без проблем, но я думаю, что делаю что-то не так, когда пытаюсь отправить его как Пост в моем скрипте.

Я пытался создать базовую html форму и протестировать ее, и таким образом я могу успешно сохранить ее, но при попытке из моего проекта Unity. Ничего не происходит.

У меня есть папка с именем " upload ", и она находится в той же папке, что и скрипт php .

Я искал ответ, но не нашел ничего, что до сих пор работало. А так как любой другой подобный вопрос касается функции Legacy WWW в Unity. Я решил попробовать создать новую тему.

Надеюсь, это имеет какой-то смысл, и любая помощь будет оценена.

Вот мой код от Unity :

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using System.IO;


public class ScreenShotScript : MonoBehaviour
{
    bool grab = false;
    byte[] bytes;

    private void Update()
    {
        //Press space to start the screen grab
        if (Input.GetKeyDown(KeyCode.Space)) {
            grab = true;
            TakePicture();
        }
    }

    //Function to take a screenshot.
    public void TakePicture()
    {
        if (grab)
        {
            int width = Screen.width;
            int height = Screen.height;

            Texture2D tex = new Texture2D(width, height, TextureFormat.RGB24, false);
            tex.ReadPixels(new Rect(0, 0, width, height), 0, 0);
            tex.Apply();

            bytes = tex.EncodeToPNG();
            Destroy(tex);

            //Testing to see if I can store the image local
            File.WriteAllBytes(Application.dataPath + "/screenShot.png", bytes);
            Debug.Log("Saved the Image!");

            StartCoroutine(SendImage());
        }
    }

    public IEnumerator SendImage()
    {
        List<IMultipartFormSection> formData = new List<IMultipartFormSection>();

        formData.Add(new MultipartFormFileSection("file", bytes));

        UnityWebRequest www = UnityWebRequest.Post("http://localhost/postimage-test.php", formData);
        yield return www.SendWebRequest();

        if (www.isNetworkError || www.isHttpError)
        {
            Debug.Log(www.error);
        }
        else
        {
            Debug.Log("Form upload complete!");
        }
    }
}

Сценарий Php:

<!--For testing purpose, to see if I can upload an image by a html form. -->
<html>
    <body>

    <form action="postimage-test.php" method="post" enctype="multipart/form-data">
        Select image to upload:
        <input type="file" name="file">
        <input type="submit" value="Upload Image" name="submit">
    </form>

    </body>
</html>
<?php

  if ($_POST) {

    $target_dir = "upload/";
    $target_file = $target_dir . basename($_FILES["file"]["name"]);
    $uploadOk = 1;
    $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

    // Check if image file is a actual image or fake image
    $check = getimagesize($_FILES["file"]["tmp_name"]);
    if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "File is not an image.";
        $uploadOk = 0;
    }

    //Check if $uploadOk is set to 0 by an error
    if ($uploadOk == 0) {
        echo "Sorry, your file was not uploaded.";
    }
    //Else everything is ok, try to upload file
    else {
        if (move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)) {
            echo "The file ". basename( $_FILES["file"]["name"]). " has been uploaded.";
        } else {
            echo "Sorry, there was an error uploading your file.";
        }
    // }

  }
  else {
    echo "No Post! ";
  }
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...