2016-05-17 6 views
4

ユーザーが自分のWebページに画像をアップロードできるように、Browser Dialogを作成しようとしています。Javascriptでファイルを選択するには?

私は<input type="file">を使用する必要があることを知っていますが、ユーザがbuttonclickのときに表示されるプロンプトを受け入れたときに情報を取得する場所がわかりません。

私の場合、buttonclickを入力すると、プロンプトが表示され、このイベントはJavascriptで処理されます。私は、プロンプトが登場したりしていない場合にかかわらず、それを取得しようとしていますので、今undefinedを取得している、もちろん

window.onload = function(){ 
 
    var buttonFile = document.getElementById("buttonFile"); 
 
    var file = document.getElementById("file"); 
 

 
    buttonFile.onclick = function(){ 
 
    document.getElementById("file").click(); 
 
    } 
 

 
    var files = document.getElementById('file').files[0]; //I do not know where to put this line 
 
    alert(files); 
 
}; \t \t \t
#file{ 
 
    display: none; 
 
}
<input type="file" id="file" accept=".jpg, .png, .jpeg"> 
 
<button id="buttonFile">Upload file</button>

は、ここに私のコードです。私がbuttononclickイベントの内部に行を置くと、その情報もまだありません。また、ファイルのonclickイベントを作成しようとしましたが、受け入れられたことを知らないため情報を取得しません。

だからここに私はいくつかの質問があります。

  • 私は私がアップロードしていた画像の値を取得するには、この行を置く必要がありますか?
  • 古いブラウザでは入力フィルタがサポートされていないため、サーバー側でも入力フィルタを確認する必要がありますか?
  • サーバー側(PHP)で確認したい場合は、フォームにリンクする必要がありますか?

ありがとうございます!

+0

''要素の 'onchange'ハンドラの中に' document.getElementById( 'file')。files [0] 'を入れてみてください。 –

+0

2と3の場合:はい。実際にはJavaScriptを使わずにこれを構築していましたが、それがうまく動作する場合にのみ、JavaScriptを追加してユーザーフレンドリーにしました。 – GolezTrol

答えて

1

あなたは、ユーザーがそれらをアップロードするまで、ファイルの値を取得する必要はありませんを除いて、右のこれまでのすべてのものを持っています。さもなければ、それは間違いなく未定義です。

window.onload = function() { 
    var buttonFile = document.getElementById("buttonFile"); 
    var file = document.getElementById("file"); 

    buttonFile.onclick = function() { 
    document.getElementById("file").click(); 
    }; 

    file.onchange = function(e){ 
    if (this.files && this.files[0]) { 
     alert(JSON.stringify(this.files[0])); 
    } 
    }; 
}; 

1)onclickハンドラに行を挿入しないでください。 2)旧式のブラウザではタイプがチェックされていない点が正しいです。サーバー側の検証はいつでも実行する必要があります。 3)Webサービスを使用することを決めた場合を除きます。

+1

ありがとうございました!まさに私が望んでいたもの!ファイルの変更のためのハンドラー:) –

0

window.onload = function() { 
 
    var buttonFile = document.getElementById("buttonFile"); 
 
    var file = document.getElementById("file"); 
 

 
    buttonFile.onclick = function() { 
 
    document.getElementById("file").click(); 
 
    }; 
 

 
    file.onchange = function() { 
 
    alert(file.files[0].name); 
 
    }; 
 
};
#file{ 
 
    display: none; 
 
}
<input type="file" id="file" accept=".jpg, .png, .jpeg"> 
 
<button id="buttonFile">Upload file</button>

関連する問題