白皙の象

プログラミングと純粋少年についての空想

8/20 ブラウザからアップした音声ファイルをPythonで処理①

読んで字の如く。

備忘録なので、まっさらな状態から再現できるように書く。

長くなりそうなので小分けして。

 

被アップ側のPCの準備

①ルータ設定(PPPoE接続になっていることを確認)

コマンドラインから、>ipconfigでデフォルトゲートウェイのIPを確認。(192.168.x.x)

→ブラウザを立ち上げてurlにデフォルトゲートウェイのIPを入れる。

→WANの設定がPPPoE接続になっているか確認。

 

②ポートを解放

80番ポートを対象にポートフォワーディング(①のルータ設定の画面で行う)の設定をする。

 ポートフォワーディング=グローバルIPへのアクセスをローカルIPへ繋ぐ

 

③サーバーを立てる

Apacheをインストールして実行。

 

Apachehttpd.confに設定を追加

ファイルをサーバーへアップするにはphpを使うので、インストールして、Apacheで実行できるようにhttpd.confに以下の文章を追加。

LoadModule php_module "C:/PHP/php8apache2_4.dll"※
<FilesMatch "\.php$">
  AddHandler php-script .php .html※
  AddType application/x-httpd-php .php .html
</FilesMatch>
PHPIniDir "C:/PHP"※

※1.ダウンロードしたPHPディレクトリ内の当該ファイルへのパスを入れる。

※2.この記述だと拡張子が.htmlのファイルでもphpが実行できる。

※3.参照するphp.iniまでのパスを入れるが、あらかじめphp.iniを作っておく必要がある。

音声ファイルのような大きいサイズのファイルをアップできるようにphp.iniの以下の値を書き換える。

  • upload_max_filesize=100M
  • post_max_size=100M
  • memory_limit=124M

またPythonを実行できるように以下の設定も追加

<Directory "${SRVROOT}/cgi-bin">
    AllowOverride None
    AddHandler cgi-script .py
    Options +ExecCGI
    Require all granted
</Directory>

SRVROOTの設定もしておく

Define SRVROOT "C:\Apache\Apache24"
ServerRoot "${SRVROOT}"

 

また環境変数を参照するPythonスクリプトの実行時にエラーが起きるので以下の一文も追加。

SetEnv USERPROFILE C:\Users\(Administrator)←環境変数で参照するユーザー名

 

②に続く

8/9

//XMLHttpRequestとfetchを覚えたので自分用に。 //<input type='submit'>だと画面遷移するので、画面そのままでphpにデータを渡す為に覚えた。 //例えばファイルのアップなら以下のようにする。

submit.html

<html>

  <form id='form1' method='POST' enctype='multipart/form-data'>

     <div><input type='file' name='file_name'></div> <div><input type='button' onclick='submit_func()'></div>

  </form>

</html>

<script>

var xhr = new XMLHttpRequest();

function submit_func(){ var form1 = new FormData(document.getElementById('form1')); xhr.open('POST','recept.php'); xhr.send(form1); }

</script>

recept.php

<?php

$tmpPath = $_FILES["file_name"]["tmp_name"];

$savePath = 'C:/アップ先パス/' . basename($_FILES["file_name"]["name"]); move_uploaded_file($tmpPath , $savePath);

?>

 

//fetchだともっと記述が少ない。で、phpから値を返せる。

 

var form1 = new FormData(document.getElementById('form1'));

fetch('recept.php', { method: 'POST', body: form1 }) .then(response => response.json()).then(res => { alert(res); }); }

 

<?php

$tmpPath = $_FILES["file_name"]["tmp_name"];

$savePath = 'C:/Apache/Apache24/htdocs/glob/' . basename($_FILES["file_name"]["name"]);

move_uploaded_file($tmpPath , $savePath);

$count = 0;

while($count<100){ sleep(1);

if(file_exists($savePath)){ break; }

$count++; }

echo json_encode($res = 'OK');

?>

 

以上。

8/6

僕が生きている間に決着をつけたい問題は、僕のインナーチャイルドであり、世界に弥漫する聖霊の正体でもある(と思っている)「純粋少年」のこと。

とはいえ、僕の中で純粋少年のイメージは薄れてきている。が、とにかく失いたくはない。それを繋ぎ止めたいと思い、ブログという形で記録をつける。

以下は弥勒菩薩についての雑感。

未だ存在していない。然るに名前があり、予感だけがある。そのアイロニーによって弥勒はヒラエスを、善悪の彼岸を歩く聖霊を、そして救済を捉えたのである。

ここにある弥勒もまた、弥勒ではない。弥勒は、何処に?或いは、自分が……