• PHPで画面推移なしでファイルをアップロードしてその情報を親ウィンドウの変数に代入する

    そ、そんなことが可能なのか・・・!と自分でもびっくりですが、できました。仕組みは簡単でした。

    Javascript

    function uploadFile() {
        $("#form").submit();    //jQuery
        return false;
    }
    
    window.hoge = [];
    <form id="form" action="/upload" method="post" enctype="multipart/form-data" target="iframe">
    <input name="upload" type="file" onchange="uploadFile();">
    </form>
    <iframe name="iframe"></iframe>Code language: JavaScript (javascript)

    PHP側

    $upload_dir = "/www/var/html/public/";    //ディレクトリはあらかじめ作っておく。Windowsの場合C:\\から
    move_uploaded_file($_FILES['upload']['tmp_name'], $upload_dir . $_FILES['upload']['name']);
    chmod($upload_dir . $_FILES['upload']['name'], 0666);
    parent.window.formdata[0] = "<?php print($_FILES['upload']['name']); ?>";Code language: PHP (php)

    テストはしてないので間違いがあるかもしれません。window.formdataのプロパティとしてグローバル配列変数を作成し、その結果を代入します。ただ、セキュリティの観点からなのかイベントの発火は何度やってもだめでした。親ウィンドウの変数に代入するくらいしかできないようです。

  • PHPで画面推移なしでファイルをアップロードしてその情報を親ウィンドウの変数に代入する

    そ、そんなことが可能なのか・・・!と自分でもびっくりですが、できました。仕組みは簡単でした。

    Javascript

    function uploadFile() {
        $("#form").submit();    //jQuery
        return false;
    }
    
    window.hoge = [];
    <form id="form" action="/upload" method="post" enctype="multipart/form-data" target="iframe">
    <input name="upload" type="file" onchange="uploadFile();">
    </form>
    <iframe name="iframe"></iframe>Code language: JavaScript (javascript)

    PHP側

    $upload_dir = "/www/var/html/public/";    //ディレクトリはあらかじめ作っておく。Windowsの場合C:\\から
    move_uploaded_file($_FILES['upload']['tmp_name'], $upload_dir . $_FILES['upload']['name']);
    chmod($upload_dir . $_FILES['upload']['name'], 0666);
    parent.window.formdata[0] = "<?php print($_FILES['upload']['name']); ?>";Code language: PHP (php)

    テストはしてないので間違いがあるかもしれません。window.formdataのプロパティとしてグローバル配列変数を作成し、その結果を代入します。ただ、セキュリティの観点からなのかイベントの発火は何度やってもだめでした。親ウィンドウの変数に代入するくらいしかできないようです。

  • IEとそれ以外のブラウザ両方で動くイベント登録

    	//イベント登録
    	if(!Object.addEventListener) {
    		Object.prototype.addEventListener = function(_type, _func, _dummy) {
    				this.attachEvent('on' + _type, _func);
    		};
    	}
    
    Code language: JavaScript (javascript)

    すべてのオブジェクトにaddEventListennerを追加する。jQueryと相性が悪いみたい。