2017-03-09 5 views
0

私はちょうど私が複数の属性を使用したい場合はjqueryを使用して、複数の属性を持つinput type = fileからファイル名の配列を読み取ることはできますか?

$('#id_myfile').val(); 

しかし、何を使って

<form enctype="multipart/form-data"> 
    <input type="file" id="id_myfile"> 
</form> 

から入力されたファイル名を(私は名前だけではなく、データが欲しい)つかむことができるのjQueryを使用します:

<form enctype="multipart/form-data"> 
    <input type="file" id="id_myfile" multiple="multiple"> 
</form> 

ここでは、いくつかのファイル名を含むコンマ区切りのリストを取得しました。入力された名前

​​

のための配列を使用して配列に個々のファイル名を取得する方法はありません、このように読むべき:

$('input[name="name_myfile[]"]').eq(0).val()) 
$('input[name="name_myfile[]"]').eq(1).val()) 

など?このメソッドは機能せず、定義されていないエラーが発生します。

このアプローチ(入力の配列名、jqueryパートではなく)は、送信されたフォームで動作します。いくつかの例はphpとその組み込み命名配列($ _FILESなど)を使って与えられています。私たちは古典的なASPを使用していますが、それはポイントの横にあります。私はJavaScriptで読むことをここに示唆しているように、ファイル名を何らかの方法で配列に入れることができますか?あるいは、ユーザーからのファイル名のリストを取得するためには全く別の/より良い方法があります(つまり、ユーザーはブラウズさせて、名前を入力する必要はありません)。

答えて

2

これはJQueryなしで行うことができます。これはlinkにチェックしてください。

var x = document.getElementById("name_myfile"); 

var files = x.files; //contains all files selected 

var name = files[0].name; //contains the name of the first file 

files配列には、すべてのファイルのバイト数も含まれています。ファイル名を取得していない完全なパスは、サンプルに合わせて、このone

コードリンクからコピーして変更を確認するには:

if (name) { 
    var startIndex = (name.indexOf('\\') >= 0 ? name.lastIndexOf('\\') : name.lastIndexOf('/')); 
    var filename = name.substring(startIndex); 
    if (filename.indexOf('\\') === 0 || filename.indexOf('/') === 0) { 
     filename = filename.substring(1); 
    } 
    alert(filename); 
} 
関連する問題