26

単一のファイルアップロード入力を含む単純なhtmlフォームがあります。(jsfiddle)

以前は、を使用してユーザーが選択したファイルにアクセスしましたがinput.files、JQueryを使用してこれを行う方法がわかりません。

コード:

$(function () {
    $("#cmdSubmit").bind("click", function () {
        var file = document.getElementById("fileInput").files[0];
        alert(file); //A

        file = $("#fileInput").val();
        alert(file); //B

        file = $("#fileInput").files[0];
        alert(file); //C

    });        
});​

オプションAは、私が期待するファイルオブジェクトを提供します。ただし、オプションBは、アップロードされたファイルの名前を提供するだけであり、(私が知る限り)ファイル自体は提供しません。

オプションCfilesは、それが未定義であることを示しています。

Jqueryに相当するものは何input.filesですか?

注:ネイティブJavaScriptを使用することに異論はありません。ただし、このプロジェクトの残りの部分でJQueryを使用していることを考えると、可能であればここでもJQueryを使用したいと思います。

4

4 に答える 4

59

要素にアクセスする必要があります。試す:

file = $("#fileInput")[0].files[0];
alert(file); //C

または(ありがとうジャック)

file = $("#fileInput").prop('files')[0];
alert(file);

フィドル

于 2012-12-06T16:20:34.647 に答える
4

以下のコードを試してください

var file = $("#fileInput").get(0).files[0];
 alert(file);

ありがとう

于 2012-12-06T16:23:32.120 に答える
3

jQueryはFilesAPIのラッパーを提供しません。したがって、少なくともjQueryコアに組み込まれていない、これを行うjQueryスタイルの方法はありません。

あなたのオプション:

  • オプションAに固執する
  • jQueryにそのようなラッパーが含まれるのを待ちます(含まれない場合があります)
  • 他の誰かによって書かれた拡張機能を見つける(存在する場合)
  • 自分で拡張機能を書く
于 2012-12-06T16:21:45.470 に答える
0
$(function () {
    $("#cmdSubmit").bind("click", function () {
       alert(this.files);
     });        
});​
于 2012-12-06T16:21:06.813 に答える