Alpaca Tech Blog

ゲーム作る系 草食動物の備忘録

【php】スマホから(ブラウザ経由で)exeファイルを実行した備忘録

概要

f:id:alpacatech:20180927165048p:plain

スマホからPCのexe実行

スマホから写真送ってPCで処理して結果を表示する処理)

に挑戦した備忘録です 。

 

手順

サーバー準備

WindowsPCにXAMPPをインストール

apachephpを利用できる環境をすぐに構築できます。

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工房

 

 

 

おしまい。

参考ページは準備中です