概要
スマホからPCのexe実行
(スマホから写真送ってPCで処理して結果を表示する処理)
に挑戦した備忘録です 。
手順
サーバー準備
WindowsPCにXAMPPをインストール
XAMPP Installers and Downloads for Apache Friends
入力ページhtml
HTML例
---------------------------------------------------------------------
<!DOCTYPE html>
<head>
<!--meta charset="utf-8"-->
<meta name="viewport" content="width=360,initial-scale=1">
</head>
<body>
<h1>画像処理テスト</h1>
<h4>
画像ファイルを選択して、処理ボタンで結果が表示されます。<br>
</h4>
<form method="post" action="imageproc.php" enctype="multipart/form-data" target="iframe">
<p><input type="file" name="example1"></p>
<p><input type="submit" name="action" value="処理"></p>
</form>
<iframe name="iframe" width="512" height="512"></iframe>
</body>
---------------------------------------------------------------------
レイアウトについて
スマホの場合解像度がバラバラなので比率的なもので表示させたいです。
<meta name="viewport" content="width=360,initial-scale=1">
を入れておくことで、解像度が幅360基準でレイアウトされました。
例)幅180の指定の場合半分のサイズ
imageproc.php実行
formでpostします。
<form method="post" action="imageproc.php" enctype="multipart/form-data" target="iframe">
ファイル指定
<input type="file" name="example1"></p>
スマホの場合ライブラリウィンドウが出て写真を選ぶことが出来ました。
フレームに結果を表示
iframeを利用することにより、
post結果を新しいページに移行されずに表示できます。
表示フレーム名指定
target="iframe"
表示フレーム箇所
<iframe name="iframe" width="512" height="512"></iframe>
php
送信されたファイルパス取得
$src = $_FILES['example1']['tmp_name'];
一時ファイル名のパスが取得できます。
exeを実行
execで実行します。
exec("test.exe " . $src);
初期カレントディレクトリはpnpの場所です。
カレントディレクトリを変更する場合
chdir("subdir");
その他
大きいファイルが受信できなかった。
60MBぐらいのBMP送ったらエラーが出ました。
.htaccessファイルを作成して、受信サイズ上限を上げました。
#メモリ使用量の上限
php_value memory_limit 256M #POSTデータの最大サイズ ※合計サイズ
php_value post_max_size 200M #1ファイルあたりの最大アップロードサイズ
php_value upload_max_filesize 200M
参考
Windowsで無名のファイルを作る方法(無名にリネーム) - AlpacaTech Blog
サーバーのアップロードファイルの最大容量の確認と容量制限の変更|PHP工房
おしまい。
参考ページは準備中です