connet.lolipop.jp
登録フォームデータの送受信(非同期通信)
imginsert.js
							/**
							* 登録フォームデータの送受信(非同期通信)
							*/
							
							function imginsert_form(form_id) {
							  var formId = document.getElementById(form_id);
							  // フォームオブジェクトを作成
							  var insert_data = new FormData(formId);
							  
							  if (insert_data == "") {
							  		return;
							  } else {	
							  	// サーバーとの通信を形成してオブジェクトを作成 
							  	var xhr = new XMLHttpRequest();
							  	xhr.onload = function (e) {
							  	  if (xhr.readyState == 4) {
							  	  	if (xhr.status == 200) {
							  	  	  // 送信元のid属性名の指定タグへリクエスト結果を返す
							  	  	  document.getElementById("reaction").innerHTML = xhr.responseText;
							  	  	} else {
							  	  	    alert('リクエストエラー: ${xhr.status}');
							  	  	}
							  	  }
							  	};
							  	xhr.onerror = function (e) {
							  	  alert('Network Error');
							  	};
							  	
							  	// リクエスト先に非同期で処理を指定
							  	xhr.open("POST", "insert.php", true);
							  	// フォームオブジェクトをPOSTで送信
							  	xhr.send(insert_data);
							  }
							}
更新フォームデータの送受信(非同期通信)
imgupdate.js
							/**
							* 更新フォームデータの送受信(非同期通信)
							*/
							
							function updateform(form_id) {
							  var formId = document.getElementById(form_id);
							  // フォームオブジェクトを作成
							  var update_data = new FormData(formId);
							  
							  if (update_data == "") {
							  		return;
							  } else {	
							  	// サーバーとの通信を形成してオブジェクトを作成
							  	var xhr = new XMLHttpRequest();
							  	xhr.onload = function (e) {
							  	  if (xhr.readyState == 4) {
							  	  	if (xhr.status == 200) {
							  	  	  // 送信元のid属性名の指定タグへリクエスト結果を返す
							  	  	  document.getElementById("reaction").innerHTML = xhr.responseText;
							  	  	} else {
							  	  	    alert('リクエストエラー: ${xhr.status}');
							  	  	}
							  	  }
							  	};
							  	xhr.onerror = function (e) {
							  	  alert('Network Error');
							  	};		
							  	
							  	// リクエスト先に非同期で処理を指定
							  	xhr.open("POST", "update2.php", true);
							  	// フォームオブジェクトをPOSTで送信
							  	xhr.send(update_data);
							  }
							}
更新フォーム画像回転データの送受信(非同期通信)
rotate.js
							/**
							* 更新フォーム画像回転データの送受信(非同期通信)
							*/
							
							function imgrotate(update_form, convert) {	
							  // 画像クリア
							  document.getElementById("uprotateimageshow").innerHTML = ' '
							  var update_form = document.getElementById(update_form);
							  // フォームオブジェクトを作成
							  var rotate_data = new FormData(update_form); 
							  	
							  // 回転角度を指定
							  if (convert == 'r_rotate') {
							    angle = -90;
							    // フォームオブジェクトにフィールドを追加してやる
							    rotate_data.append("rotate", angle);
							  } else if(convert == 'l_rotate') {		
							      angle = 90;
							      // フォームオブジェクトにフィールドを追加してやる
							      rotate_data.append("rotate", angle);
							  }
							  
							  if (rotate_data == "") {
							     return;
							  } else {	
							  	// サーバーとの通信を形成してオブジェクトを作成
							  	var xhr = new XMLHttpRequest();
							  	xhr.onload = function (e) {
							  	  if (xhr.readyState == 4) {
							  	  	if (xhr.status == 200) {
							  	  		// 送信元のid属性名の指定タグへリクエスト結果を返す
							  	  		document.getElementById("uprotateimageshow").innerHTML = xhr.responseText;
							  	  	} else {
							  	  	    alert('リクエストエラー: ${xhr.status}');
							  	  	}
							  	  }
							  	};
							  	xhr.onerror = function (e) {
							  	  alert('Network Error');
							  	};		
							  	
							  	// リクエスト先に非同期で処理を指定
							  	xhr.open("POST", "rotate.php", true);
							  	// フォームオブジェクトをPOSTで送信
							  	xhr.send(rotate_data);
							  }	
							}


プログラムの作成はこれで終了です。
PHP初期設定の確認
phpのプログラムでも画像データを扱うには大量のメモリを消費します。メモリ対策は最重要です。
そこでプログラムを実行する前に、メモリの設定などが書いてあるphp.ini(xampp/php/)ファイルを
エディタで開いて、その初期の設定を確認してみて下さい。

1.upload_max_filesize
アップロードされるファイルの最大サイズを指定します。
upload_max_filesize = 2M ⇐ デフォルト

アップロードする画像ファイルサイズより大きめに、ここでは6M(任意)に変更します。
(デジカメなどの写真一枚当たり2M~4M程かな)
デフォルトをコメント(;)して次のようにサイズを変更します。
;upload_max_filesize = 2M
 upload_max_filesize = 6M

2.post_max_size
POSTデータの最大サイズを指定します。
post_max_size = 8M ⇐ デフォルト
上記1項の「upload_max_filesize」と関連があり、こちらの値をより大きくする必要があります。

3.memory_limit
プログラムで最大使用するメモリ数を指定します。
memory_limit = 128M ⇐ デフォルト

プログラムを実行した時、次のようなメモリ不足のエラーメッセージが表示された時は、デフォルト
のメモリ値を上げてみて下さい。当プログラムではデフォルト値のままでOk。
<エラーメッセージ>
Fatal error: Allowed memory size of ×××××bytes⋯⋯

以上、PHP7.2.9バージョンのメモリ関連の説明です。
整理すると --> upload_max_filesize < post_max_size < memory_limit
設定値を変更した時は必ず、「XAMPP Control Panel」から「Apache」ウェブサーバーを再起動して
変更内容を有効にしてください。
-->コントロールパネル(xampp/xampp-control.exe)

また他の方法で例えば「Windows」に「Apache」アプリケーションを単独にインストールしてある
場合は、「スタート」->「コンピューターの管理」の中から「Apache」の起動・停止の操作も可
能です。

4.「imagecreatefromjpeg」関数のエラー対策
画像ファイルを登録(insert.php)する際、次のようなエラーメッセージが生じる場合があります。
”Fatal error: Uncaught Error: Call to undefined function imagecreatefromjpeg()in....."
対策はいろいろあるようですが、まず
「xampp/php/php.ini」ファイルを開いて以下のコマンドを探して下さい。
;extension=gd
のようにコメントさけていれば、それを外して以下のようにします。
extension=gd
修正・更新後は有効にするため、必ずサーバーの「Apache」を再起動して下さい。
プログラムを実行する
・Webサーバー(Apach)を起動
・ブラウザを立ち上げ、アドレスバーに以下のアドレスを入力します
    http://localhost/image-Sqlite-SampleApp/
・ブラウザの更新をクリック

正常に動作したでしょうか!、プログラムには必ずバグはつきものです、根気よく挑戦してみて下さい。
Search
Google


↟ このページの先頭へ