6

jQuery経由でフォームを送信しようとしています。私のフォームには、アップロードする必要があるフィールドとファイルが含まれています。タイプENCTYPE="multipart/form-data"です。

次を使用してすべてのフィールド値を受け取ることができます:post = $('#myForm').serialize(); しかし、どうすれば$_FILES配列を受け取ることができますか? アップロードされたファイルを処理するためにこれが必要です。

これは jQuery を使用して可能ですか? それとも、jQuery 用の特別なアップロード プラグインを使用する必要がありますか?

4

6 に答える 6

12

jqueryフォームはそれを行うための最良の方法です。通常のフォームに追加できます。

<form method="post" action="URL">
<input type="file" name="file">
<input type="text" name"text">
<input type="submit"> 
</form>

<script type="text/javascript">
$(document).ready(function() { 
  $(form).ajaxForm();
})
</script>

期待どおりに動作しますが、ajax を使用します。

http://malsup.com/jquery/form/#code-samples

于 2009-02-15T21:37:32.600 に答える
11

JavaScript を使用してファイルをアップロードすることはできません。

この関連する質問を確認してください:
Ajax を使用してファイルのアップロードを行うことは可能ですか?

基本的に、ファイル アップロード用に AJAX を「偽装」する最も一般的な 2 つの方法は、SWFUploadなどの Flash プラグインを使用する方法と、リクエストを処理する非表示の iframe にフォームを送信する方法です。

于 2009-02-15T21:30:36.750 に答える
1

フォームにファイル入力が含まれていますが、フォームに method=POST および enctype=multipart/form-data がありません。ファイルは送信されません

于 2011-11-17T05:56:51.763 に答える
0

可能ですが、Google Chromeでは機能しません)見てください!

...
<form method='post' enctype='multipart/form-data'>
<input type="file" id="imf" name="imf"/>
<input type="button" id="Save"/>
</form>

...

$("#Save").live("click", function(){

var photo = document.getElementById("imf"); 
var file  = photo.files[0];

   $.post('/user/saveNewPhoto', {'imf':file.getAsDataURL(), fname:file.fileName }, function( data ){
   alert ( data );
    });

});

アップロードサイドスクリプトはbase64をデコードする必要があります)そしてそれはすべてですが、私は大きなサイズのファイルでこのスクリプトをテストしません

于 2010-02-05T11:53:08.983 に答える
0

たとえば、ブラウザーを推奨するイントラネット用の管理アプリを作成している場合など、環境を制御できる場合は、Firefox 3 以降で実際の AJAX ファイルのアップロードが可能です。それ以外の場合は、iframe の回避策または Flash ベースのアップローダーを使用することをお勧めします。

于 2009-02-15T22:06:40.063 に答える