我已按照此方法操作并将全尺寸图像保存到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
我可以再次上传,但没有调整大小。
答案 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。