آپلود فایل png توسط یونیتی روی هاست php
جمعه, ۲۲ آبان ۱۳۹۴، ۱۰:۳۹ ب.ظ
منبع :gameover.blog.ir
برای اینکار ابتدا یک دوربین توی صحنه داریم.
یک فایل تصویری به اسم screenShot.png در مسیر جاری داریم.
یک اسکریپت csharp برای ایجاد دکمه ی آپلود می سازیم به اسم test.cs می سازیم و ربطش می دیم به دوربین:
سورس اسکریپت سیشارپ test.cs :
//test.cs using UnityEngine; using System.Collections; public class test : MonoBehaviour { // Use this for initialization void Start () { } // Update is called once per frame void Update () { } void OnGUI() { GUI.Label(new Rect(100, 0, 500, 20), Application.dataPath); if (GUI.Button(new Rect(100, 100, 150, 20), "Upload")) { UploadFile("http://yourSiteName.pergig.ir/upload/upload_file.php"); } } IEnumerator UploadFileCo(string uploadURL) { print ("file://" + Application.dataPath + "/screenShot.png"); WWW localFile = new WWW("file://" + Application.dataPath + "/screenShot.png"); yield return localFile; WWWForm postForm = new WWWForm(); postForm.AddBinaryData("file", localFile.bytes, "screenShot.png", "image/png"); WWW upload = new WWW(uploadURL, postForm); yield return upload; if (upload.error == null) { Debug.Log(upload.text); } else { Debug.Log("Error during upload: " + upload.error); } } void UploadFile(string uploadURL) { StartCoroutine(UploadFileCo(uploadURL)); } }
کد بالا رو ذخیره کنید و بکشید روی دوربین رها کنید.
به جای "http://yourSiteName.pergig.ir/upload/upload_file.php" آدرس فایل upload_file.php رو بدید.
اینم سورس upload_file.php که باید روی یک هاست php بذاریدش:
//upload_file.php <?php $allowedExts = array("gif", "jpeg", "jpg", "png"); $temp = explode(".", $_FILES["file"]["name"]); $extension = end($temp); if ((($_FILES["file"]["type"] == "image/gif") || ($_FILES["file"]["type"] == "image/jpeg") || ($_FILES["file"]["type"] == "image/jpg") || ($_FILES["file"]["type"] == "image/pjpeg") || ($_FILES["file"]["type"] == "image/x-png") || ($_FILES["file"]["type"] == "image/png")) && ($_FILES["file"]["size"] < 20000) && in_array($extension, $allowedExts)) { if ($_FILES["file"]["error"] > 0) { echo "Return Code: " . $_FILES["file"]["error"] . "<br>"; } else { echo "Upload: " . $_FILES["file"]["name"] . "<br>"; echo "Type: " . $_FILES["file"]["type"] . "<br>"; echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>"; echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>"; if (file_exists("upload/" . $_FILES["file"]["name"])) { echo $_FILES["file"]["name"] . " already exists. "; } else { move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);//move uploaded file into "upload" folder in current dir echo "Stored in: " . "upload/" . $_FILES["file"]["name"]; } } } else { echo "Invalid file"; } ?>
نکته: کد
<?php move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]); ?>
باعث میشه فایل یا عکس آپلود شده move بشه به پوشه ی دیگه ای به نام upload که روی سایت باید در مسیر upload_file.php ایجادش کرده باشید(علت این کار اینه که هر فایلی بعد از آپلود ابتدا توی یه پوشه ی موقتی روی سایت ذخیره میشه و حتما باید از تو پوشه ی temporary یا پوشه ی فایل های موقت ، انتقالش بدیم به جای دیگه وگرنه توسط موتورهای امنیتی سایت به طور خودکار حذف میشه. علتش هم سیاست های هر سایت هست که از درک این بحث خارجه)
شما می تونید روی pergig.ir یه هاست رایگان php بگیرید و توی پوشه ی htdocs یه پوشه به اسم upload بسازید و فایل upload_file.php و همچنین یک پوشه ی upload رو داخلش ایجاد کنید و آدرس رو به اسکریپت یونیتی بدید.
---
هرکی مشکل داشت بپرسه ازم
اینم یک شات از صحنه ی بعد از آپلود :
سلام
از مطلبت
میشه با متد های جدید یونیتی هم بررسی کنید و آموزش را به روز کنید