UnityWebRequestで画像ファイルを送信しPHPで受け取る最小の実装を備忘録として残します。
Unity側
前提条件として画像ファイルはバイト配列として取得している状態を作ります。
以前執筆したコチラの記事でTextureをPNGにエンコードしたバイト配列作成までを紹介しているので、参考になるかもしれません。
【Unity】RawImageのTextureをPNGにエンコードする方法
IEnumerator Send(byte[] bytes)
{
var form = new WWWForm();
// "file"はPHP側で$_FILESから取得するキー ex)$_FILES["file"]
form.AddBinaryData("file", bytes, "image.png", "image/png");
var req = UnityWebRequest.Post("http://localhost:8080/api.php", form);
yield return req.SendWebRequest();
}
PHP側
api.php
$fileName = $_FILES["file"]["name"];
// api.phpと同じディレクトリに保存されます
move_uploaded_file($_FILES["file"]["tmp_name"], $fileName);
最後に
エラーハンドリングを考慮するとUnityもPHPも記述することはまだまだありますが、本記事では肝となる部分の実装のみを紹介しました。
環境
- Unity2019.4.4f1
- PHP 7.2.16