モバイルアプリを作ってるときに、画像アップロード部分を先回りして実装したいということあると思います。
そこで簡単なサンプルを用意したので書きました。
またエラー時の処理とかも色々書きたいときもあると思うのでモバイルアプリ側指定したHTTPステータスを返すようになっています。
出来ること
- 画像アップロードができる
- ステータスをモバイルアプリ側が指定できる(開発用、デバッグ用)
- 「開発時に必ずエラーにして、エラー処理をしっかり確認したい!」とか、そういう要望あるとおもって。
ソースコード(PHP)
index.php
<?php
$myHeader = $_SERVER['HTTP_X_SAMPLE_ERROR_HEADER'];
if($myHeader){
$status = (int)$myHeader;
http_response_code($status);
} else {
http_response_code(200);
}
if(is_uploaded_file($_FILES['up_file']['tmp_name'])){
if(move_uploaded_file($_FILES['up_file']['tmp_name'],"./".$_FILES['up_file']['name'])){
header('content-type: application/json; charset=utf-8');
echo json_encode(array($_FILES['up_file']['name']));
return;
}else{
echo json_encode("error while saving.");
}
}
?>
<!DOCTYPE html>
<html lang="ja">
<body>
<form action="" method="POST" enctype="multipart/form-data">
<input type="file" name="up_file">
<input type="submit" value="upload">
</form>
</body>
</html>
使い方
準備
- サーバーを立てる。(AWS EC2 t2.micro等)
- PHPの実行環境を整える
- AmazonLinuxでしたら、これが参考になりそうなドキュメント https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/install-LAMP.html
- ソースコードを配置(例えば
/var/www/html/
) - permissionを適切に設定
- アップロードされるファイルは、index.phpと同じ所にUploadされます。
呼び出し方
- Method: POST
- Request Header:
X-SAMPLE-ERROR-HEADER
に数字を入れると、statusはその数値に設定してくれる- 未指定は200を返す。
- 500を指定すると、500で返してくる(画像アップロード出来た/出来ないに関係なく)
- Request Body
up_file
でファイルを送信 - Response body: ファイル名のJSONが配列で帰ってきます。