我试图利用由blueimp:
https://github.com/blueimp/jQuery-File-Upload开发的jQuery文件上传插件中可用的客户端图像调整大小
不幸的是,我无法使图像大小调整工作.上传本身工作完美.
this.$('.fileupload').fileupload({ url: websiteUrl + 'deed/uploadimage',dataType: 'json',previewMaxWidth: 90,previewMaxHeight: 90,previewCrop: true,imageOrientation: true,disableImageResize: false,add: function($,data) { _.each(data.files,function(file){ file.model = self.addImagePreview(); }); _.defer(_.bind(data.submit,data)); },done: function($,data) { // Quirky shit. Iterate over data.files array while we know that // only one file are uploaded at a time... _.each(data.files,function(file){ file.model.set({ "uploading": false,"src": data.response().result.image,"preview": data.response().result.cropped }); }); } });
我已经尝试在resizeImage方法中放置一个断点,看看是否因为某种原因而破坏了一个条件,但该方法从未被调用.
所有依赖关系都按照以下顺序加载:
load-image.min.js canvas-to-blob.js jquery.ui.widget.js jquery.fileupload.js jquery.fileupload-process.js jquery.fileupload-image.js jquery.iframe-transport.js
我在这里遗漏了什么吗?
解决方法
找到解决方案.
显示当使用fileupload-process扩展名时,指定add函数会覆盖fileupload-process ext的功能.它调用processQueue,这是注册图像大小和更多的位置.
解决方案是将事件侦听器附加到fileuploadadd而不是覆盖add函数:
$('.fileupload').fileupload({ ... }).bind('fileuploadadd',callback)
$('.fileupload').fileupload({ add: function(e,data) { $.blueimp.fileupload.prototype.options.add.call(this,e,data); } });