Rails 4中的jQuery文件上传与图像大小调整

时间:2015-02-27 21:11:00

标签: ruby-on-rails jquery-file-upload

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

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

未捕获的TypeError:无法读取属性' 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文件的方式有关。我已将列出的文件的来源放在我的:

供应商/资产/ Javascript角

并在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

我可以再次上传,但没有调整大小。

1 个答案:

答案 0 :(得分:1)

我终于想通了jquery.fileupload-process和jquery.fileupload-image需要在jquery.fileupload之后加载(我没有重命名。)并改变了加载顺序:

//= 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。