Jquery文件上传捕获完成上传操作

时间:2015-06-29 08:01:02

标签: jquery file-upload

我使用Jquery file upload by blueimp想要捕获上传文件后发生的操作。 所以,这很好用

.on('change','input[type=file]',function(e)
{
    console.log('OOOOOOOOk');
})

但它不适合我,因为我需要在文件上传完成后采取行动。 所以,在docs我找到了这个解决方案:

var url = './fileUpload/jQuery-File-Upload/server/php/';
      $('#fileupload').fileupload({
          url: url,
          dataType: 'json',
          done: function (e, data) {
              $.each(data.result.files, function (index, file) {
                  $('<p/>').text(file.name).appendTo('#files');
              });
          },
          progressall: function (e, data) {
              var progress = parseInt(data.loaded / data.total * 100, 10);
              $('#progress .progress-bar').css(
                  'width',
                  progress + '%'
              );
          }
      }).prop('disabled', !$.support.fileInput)
          .parent().addClass($.support.fileInput ? undefined : 'disabled')
          .bind('fileuploadcompleted',function(e,data)
            {
              console.log('eventFinished');
            });

但是我在上传后没有在控制台中看到eventFinished字符串,但请参阅OOOOOOOk。那我怎么能抓住这个事件呢?

1 个答案:

答案 0 :(得分:3)

您正在绑定&#39; fileuploadcompleted&#39;事件到实际元素的父元素,所以尝试以这种方式重新安排代码。

var url = './fileUpload/jQuery-File-Upload/server/php/';
  $('#fileupload').fileupload({
      url: url,
      dataType: 'json',
      done: function (e, data) {
          $.each(data.result.files, function (index, file) {
              $('<p/>').text(file.name).appendTo('#files');
          });
      },
      progressall: function (e, data) {
          var progress = parseInt(data.loaded / data.total * 100, 10);
          $('#progress .progress-bar').css(
              'width',
              progress + '%'
          );
      }
  }).bind('fileuploadcompleted',function(e,data)
        {
          console.log('eventFinished');
        }).prop('disabled', !$.support.fileInput)
      .parent().addClass($.support.fileInput ? undefined : 'disabled');