2

blueimp ファイル アップロード プラグインを使用して画像を非同期にアップロードしようとしていますが、アップロードしようとしても何も起こりません。コールバック関数はまったくトリガーされていません。この関数を使用して、ファイル アップローダーをファイル入力にバインドしています。

var initFileUpload = function (gender) {
//Used to bind fileupload plugin and send files

//bind file upload
$('#add_form').fileupload({
    namespace: gender+'_image',
    singleFileUploads: true,
    formData: [{name:'gender', value: gender}],
    fileInput: $("#"+gender+'_image'), 
    done: function(e, data){
        alert('success '+data.result);
    }

});
//Bind event callbacks
$('#add_form').bind('fileuploadsend', function (e, data) {
    console.log('sent');
});
$('#add_form').bind('fileuploaddone', function (e, data) {
    console.log('done');
});
$('#add_form').bind('fileuploadfail', function (e, data) {
    console.log(data.result);
});
$('#add_form').bind('fileuploadalways', function (e, data) {
    console.log(data.result);
});

}

これは、こちらの複数ファイルのアップロードのチュートリアルに触発されました名前が異なる3つの異なる入力があるため、このようにしています。次に、ajax 呼び出し内で send 関数を手動で起動するか、試行しています。

$.ajax({
      type: "POST",
      url: "/manage/processadditem",
      data: $("#add_form").serialize(),
      dataType: "html",
      success: function( response, textStatus, XHR )
      {
        if(response.indexOf('invalid') >= 0 || response.indexOf('Exception') >= 0){
            //Show them their errors
            alert(response);
        }
        else{
            //Upload item images
            //Send files
            $('#add_form').fileupload('send', {fileInput: $("#neutral_image"), url: '/manage/items/itemimage/test' });
            $('#add_form').fileupload('send', {fileInput: $("#male_image"), url: '/manage/items/itemimage/test' });
            $('#add_form').fileupload('send', {fileInput: $("#female_image"), url: '/manage/items/itemimage/test' });
            alert('should have uploaded image to cdn.completeset.com/items/test_nla.jpg if gender was neutral');
        }

      },
      error: function(jqXHR, textStatus, errorThrown){
        alert('An error occurred, please try again later.');
      }
    });

ここのドキュメントの「プログラムによるファイルのアップロード」セクションの下で、 send メソッドを使用して次$('#fileupload').fileupload('send', {files: filesList});のような行でファイルを手動で送信できることがわかりました。残念ながら、どのコールバック関数からもまったく応答がありません。その理由はわかりません。

4

2 に答える 2

2

ここでmalsupフォームプラグインを使用することになりました。http://malsup.com/jquery/form/#ajaxForm blueImp で 2 日間苦労した後、ほんの数分でこれを起動して実行することができました。

于 2012-08-11T22:03:03.427 に答える
0

これを試してみてください。ここで実際の例をダウンロードできます。

jQuery Blueimp ファイル アップローダ

于 2013-06-08T07:04:06.920 に答える