웹 서버에 유니티 업로드 및 다운로드 이미지

영화가 내 마지막 기사를 읽을 경우, 참조하십시오 유니티와 웹 서버 포스트 가져 오기

첫째, 업로드 및 다운로드 사진

WWW의 단결 업로드 할 수 있습니다뿐만 아니라 텍스트의 형태로 다운로드 데이터, 당신은 또한 업로드 및 다운로드 사진 만 전송시, 정보가 텍스트 형식으로 사진을 요구 할 수 있습니다.

유니티에서 RawImage를 작성하고 저장 사진 정보를 저장하는 데 사용 WebManager.cs Texture2D 속성에 스크립트를 추가 1. 로컬 이미지의 캐릭터 속성 액세스 주소를로드하는 RawImage 속성 표시 사진을 업로드 :
string PicturePath = @"file://C:\Users\Administrator\Desktop\vip.jpg";

public RawImage myRaw;

public Texture2D m_uploadImage;
이 사진을 서버에 업로드 할 수 있습니다 뒤에 m_uploadImage과 관련된 이미지가 초기화 깨어에서 사진로드를로드하는 로컬 부하 사진 WebManager.cs 스크립트 방법을 만들기 2. 우리는 m_uploadImage 필요 :
private void Awake()
{
        StartCoroutine(ReadPic());
}

IEnumerator ReadPic()
{
	WWW www = new WWW(PicturePath);
	yield return www;
    if (www.error != null)
    {
    	m_info = www.error;
        yield return null;
    }
    m_uploadImage = www.texture;
}
업로드에게 방법 및 따르는 읽는 방법 WebManager.cs를 추가합니다 :
/// <summary>
    /// 服务器下载图片
    /// </summary>
    /// <returns></returns>
    IEnumerator DownLoadPic()
    {
        WWW www = new WWW("http://127.0.0.1:8088/upload/xxx.png");
        yield return www;
        if (www.error != null)
        {
            Debug.LogError(www.error);
            yield return null;
        }
        myRaw.texture = www.texture;
    }

    /// <summary>
    /// 图片上传服务器
    /// </summary>
    /// <returns></returns>
    IEnumerator IRequestPic()
    {
        WWWForm form = new WWWForm();
        form.AddField("folder","upload/");
        form.AddBinaryData("Pic", m_uploadImage.EncodeToPNG(),"xxx.png","image/png");
        WWW www = new WWW("http://127.0.0.1:8088/index.php", form);
        yield return www;
        if (www.error != null)
        {
            Debug.LogError(www.error);
            yield return null;
        }
        if (www.isDone)
        {
            Debug.LogError("上传成功");
            StartCoroutine(DownLoadPic());
        }
        Debug.LogError(www.text);
    }

이 코드, 업로드, 우리는 함수 EncodeToPNG 사진 웹 서버에 업로드 바이트 배열, 사용 WWWForm의 방법을 차례 사용하고, 차이가 전에, 이번에는 PNG 형식의 이미지를 업로드 할 수 있습니다. 업로드는 사진을로드에 완료되면.

OnGUI 업로드를 추가하고 코드를 다운로드하고 원래 사각형의 매개 변수를 수정 (4)
 private void OnGUI()
    {
        GUI.BeginGroup(new Rect(Screen.width * 0.5f - 100,Screen.height * 0.5f -100,500,200),"");

        GUI.Label(new Rect(10,10,400,30),m_info);

        if (GUI.Button(new Rect (10,50,150,30),"GetData"))
        {
            StartCoroutine(IGetData());
        }

        if (GUI.Button(new Rect(10,80,150,30),"Post Data"))
        {
            StartCoroutine(IPostData());
        }

        if (GUI.Button(new Rect(10, 110, 150, 30), "上传 Image"))
        {
            StartCoroutine(IRequestPic());
        }

        if (GUI.Button(new Rect(10, 140, 150, 30), "下载 Image"))
        {
            StartCoroutine(DownLoadPic());
        }
        GUI.EndGroup();
    }
코드의 index.php를 수정 (5)
<?php
if ( isset($_GET['username']) && isset($_GET['password']) )
{
      echo 'username is '.$_GET['username'].' and password is '.$_GET['password']; 
}
else if ( isset($_POST['username']) && isset($_POST['password']) )
{
      echo 'username is '.$_POST['username'].' and password is '.$_POST['password'];
}
else if( isset($_FILES['Pic']))
{
      //$_FILES['字段名']['name'] 客户端文件的原名称。

      //$_FILES['字段名']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。

      //$_FILES['字段名']['size'] 已上传文件的大小,单位为字节。

      //$_FILES['字段名']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。

      //$_FILES['字段名']['error'] 和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在PHP3.0以后成了常量)

      $folder=$_POST["folder"];//根据表单字段接受文件夹的字符串信息
      $fileName=$_FILES["Pic"]["name"];//根据表单字段接收需要保存的文件名字
      $tmp=$_FILES["Pic"]["tmp_name"];
      $fil=$folder.$fileName;

      //下面这一段代码保存数据信息到文本,用来测试提交的字符串信息
      $file=fopen("test.txt","a+");
      fwrite($file,$folder."+");
      fwrite($file,$fileName."+");
      fwrite($file,$fil);
      fclose($file);
      //判断当期目录下的upload目录是否存在该文件
      if(!file_exists($fil))
      {	
           //如果upload目录不存在该文件则将文件上传到upload目录下
           move_uploaded_file($tmp,$fil);
      }
}
?>

우리가 임시 파일 위치입니다 'tmp_name'는 PHP의 배열입니다 사진을 얻을 $ _FILES를 사용할 수 있도록 유니티, 사진을 업로드하고 있기 때문에, 우리는 당신이 사진의 배열을 얻을 수있는이 위치를 방문하십시오.

6. 시험은 다음과 같다 :

그림 삽입 설명 여기
당신은 클릭하면 업로드 이미지
그림 삽입 설명 여기

둘째, 서버 폴더를 삭제하고 서버 폴더를 생성

폴더 및 파일 삭제하는 방법을 만들 WebManager.cs 방식으로 폴더를 추가하십시오
 /// <summary>
    /// 创建文件夹
    /// </summary>
    /// <param name="FolderName"></param>
    /// <returns></returns>
    IEnumerator CreatFolder(string FolderName)
    {
        WWWForm form = new WWWForm();
        form.AddField("CreateFolderName", FolderName);
        WWW www = new WWW("http://127.0.0.1:8088/index.php", form);
        yield return www;
        if (www.error != null)
        {
            m_info = www.error;
            yield return null;
        }

        m_info = www.text;
        if (www.isDone)
        {
            Debug.Log("创建文件夹完成");
        }
        Debug.LogError(www.text);
    }

    /// <summary>
    /// 删除文件夹
    /// </summary>
    /// <param name="FolderName"></param>
    /// <returns></returns>
    IEnumerator DelFolder(string FolderName)
    {
        WWWForm form = new WWWForm();
        form.AddField("DeleteFolderName", FolderName);
        WWW www = new WWW("http://127.0.0.1:8088/index.php", form);
        yield return www;
        if (www.error != null)
        {
            m_info = www.error;
            yield return null;
        }

        m_info = www.text;
        if (www.isDone)
        {
            Debug.Log("删除文件夹完成");
        }
        Debug.LogError(www.text);
    }
다음 함수의 코드를 추가합니다 OnGUI
if (GUI.Button(new Rect(150, 110, 150, 30), "服务器创建文件夹"))
        {
            StartCoroutine(CreatFolder("NewFolder"));
        }

        if (GUI.Button(new Rect(150, 140, 150, 30), "服务器删除文件夹"))
        {
            StartCoroutine(DelFolder("NewFolder"));
        }
index.php에 대한 코드를 수정합니다
<?php
if ( isset($_GET['username']) && isset($_GET['password']) )
{
      echo 'username is '.$_GET['username'].' and password is '.$_GET['password']; 
}
else if ( isset($_POST['username']) && isset($_POST['password']) )
{
      echo 'username is '.$_POST['username'].' and password is '.$_POST['password'];
}
else if( isset($_FILES['Pic']))
{
      //$_FILES['字段名']['name'] 客户端文件的原名称。

      //$_FILES['字段名']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如"image/gif"。

      //$_FILES['字段名']['size'] 已上传文件的大小,单位为字节。

      //$_FILES['字段名']['tmp_name'] 文件被上传后在服务端储存的临时文件名,一般是系统默认。可以在php.ini的upload_tmp_dir 指定,但 用 putenv() 函数设置是不起作用的。

      //$_FILES['字段名']['error'] 和该文件上传相关的错误代码。['error'] 是在 PHP 4.2.0 版本中增加的。下面是它的说明:(它们在PHP3.0以后成了常量)

      $folder=$_POST["folder"];//根据表单字段接受文件夹的字符串信息
      $fileName=$_FILES["Pic"]["name"];//根据表单字段接收需要保存的文件名字
      $tmp=$_FILES["Pic"]["tmp_name"];
      $fil=$folder.$fileName;

      //下面这一段代码保存数据信息到文本,用来测试提交的字符串信息
      $file=fopen("test.txt","a+");
      fwrite($file,$folder."+");
      fwrite($file,$fileName."+");
      fwrite($file,$fil);
      fclose($file);
      //判断当期目录下的upload目录是否存在该文件
      if(!file_exists($fil))
      {	
           //如果upload目录不存在该文件则将文件上传到upload目录下
           move_uploaded_file($tmp,$fil);
      }
}
else if( isset($_POST['CreateFolderName']))
{
      $myFile = $_POST["CreateFolderName"];//获取要创建的文件夹名字
 
      //文件存储路径
 
      if(!file_exists($myFile))
      {
            //判断文件夹是否存在
    //42行 
            mkdir($myFile,0777);//创建文件夹,并指定权限为0777才可以上传文件保存进去
      }
}
else if( isset($_POST['DeleteFolderName']))

{
      $myFile = $_POST["DeleteFolderName"];

      //调用函数,传入路径

      deleteDir($myFile);
}
?>
<?php
//调用删除方法
 
      function deleteDir($dir)
      
{
    
            if (!$handle = @opendir($dir))//判断当前文件夹是否为根目录
    
                  {
        
                        return false;
    
                  }
    
            while (false !== ($file = readdir($handle)))//循环遍历当前文件夹
    
            {
        
                  if ($file !== "." && $file !== "..")
        
                  {   
                        //排除当前目录与父级目录
            
                        $file = $dir . '/' . $file;
           
                        if (is_dir($file))
            
                        {
                
                              deleteDir($file);//删除当前文件夹中的文件
            
                        }
            
                        else
            
                        {
                
                              @unlink($file);
            
                        }
        
                  }
    
            }
    
            @rmdir($dir);//删除文件夹

      }
?>
게시 62 개 원래 기사 · 원 찬양 5 · 조회수 (3926)

추천

출처blog.csdn.net/qq_42194657/article/details/103041487