jQuery 在 Rails 4 中上传文件并调整图像大小

jQuery File Upload in Rails 4 with Image Resizing

我已遵循此操作方法并将全尺寸图像保存到 S3: https://github.com/uploaders/direct-aws-sdk-rails-4.2

但我无法先调整照片大小。加载具有输入表单的视图时,chrome 控制台出现 js 错误。

未捕获类型错误:无法读取与这两个文件相关的未定义的 属性 'fileupload':

jquery.fileupload-进程 var originalAdd = $.blueimp.fileupload.prototype.options.add; 和 jquery.fileupload-图片 $.blueimp.fileupload.prototype.options.processQueue.unshift(

我正在复制粘贴此处列出的 js 文件: https://github.com/blueimp/jQuery-File-Upload/wiki/Client-side-Image-Resizing

我上传的 JS 看起来像:

...
fileInput.fileupload({
  fileInput:       fileInput,
  url:             "http://" + s3params.url.host,
  type:            'POST',
  autoUpload:       true,
  formData:         s3params.fields,
  paramName:        'file', // S3 does not like nested name fields i.e. name="user[avatar_url]"
  dataType:         'XML',  // S3 returns XML if success_action_status is set to 201
  replaceFileInput: false,
  disableImageResize: false,
  disableImageResize: /Android(?!.*Chrome)|Opera/ 
    .test(window.navigator && navigator.userAgent),
  imageMaxWidth: 800,
  imageMaxHeight: 800,
  imageCrop: true, // Force cropped images    
...

我认为我的困惑可能与我在项目中包含 javascript 文件的方式有关。我已将列出文件的来源放在我的:

vendor/assets/javascripts

并在 application.js 中引用它们,如下所示:

//= require jquery
//= require jquery_ujs
//= require turbolinks

//= require jquery.ui.widget
//= require load-image.all.min
//= require jquery.fileupload-image
//= require canvas-to-blob.min
//= require jquery.iframe-transport
//= require jquery.fileupload-process
//= require z.jquery.fileupload
//= require_tree .

如果我删除:

//= require jquery.fileupload-process
//= require jquery.fileupload-image

我可以重新上传,但没有调整大小。

我终于弄明白 jquery.fileupload-process 和 jquery.fileupload-image 需要在 jquery.fileupload 之后加载(我重命名没有 z.)并更改了加载顺序:

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require jquery.ui.widget
//= require load-image.all.min
//= require canvas-to-blob.min
//= require jquery.iframe-transport
//= require jquery.fileupload
//= require jquery.fileupload-process
//= require jquery.fileupload-image

//= require_tree .