【问题标题】:Cloudinary uploads file but button still shows 'No file chosen'Cloudinary 上传文件但按钮仍显示“未选择文件”
【发布时间】:2012-12-30 01:25:37
【问题描述】:

我正在使用cloudinary 并在此处关注了所有内容:http://cloudinary.com/blog/direct_image_uploads_from_the_browser_to_the_cloud_with_jquery

这是我的看法haml

= form_tag items_path do
  = cl_image_upload_tag(:image_id, :crop => :limit, :width => 1000, :height => 1000)
  = submit_tag 'Submit'

我已经检查并加载了所有 cloudinary javascript。该按钮正在将文件上传到 cloudinary,我的 chrome 控制台显示:

XHR finished loading: "https://api.cloudinary.com/v1_1/hhfk6ki1i/auto/upload". jquery.js:8417
send jquery.js:8417
jQuery.extend.ajax jquery.js:7969
send jquery.fileupload.js:600
$.widget._onSend jquery.fileupload.js:656
newData.submit jquery.fileupload.js:695
$.widget.options.add jquery.fileupload.js:137
$.Widget._trigger jquery.ui.widget.js:278
(anonymous function) jquery.fileupload.js:698
jQuery.extend.each jquery.js:612
$.widget._onAdd jquery.fileupload.js:688
$.widget._onChange jquery.fileupload.js:752
jQuery.event.dispatch jquery.js:3064
elemData.handle.eventHandle

我希望我的按钮在我选择一个文件后显示上传文件的名称。这应该归功于 cloudinary 插件,还是我应该实现所有 Javascript 来捕获该事件并更改我的上传标签?

我说的是这个总是显示“未选择文件”的按钮(即使文件已上传并在 Cloudinary 中可用):

顺便说一句:如果它是相关的。我没有使用carrierwave,也没有使用Attachinary,因为我使用的是couchrest_model

【问题讨论】:

    标签: ruby-on-rails-3 file-upload cloudinary


    【解决方案1】:

    上传开始时替换输入字段的行为可以通过运行来禁用:

    $('.cloudinary-fileupload').fileupload('option', 'replaceFileInput', false);
    

    上传完成时调用cloudinarydone的回调。如果您想在字段开始时(当输入字段被重置时)隐藏字段,您可以使用:

    $('.cloudinary-fileupload').bind('fileuploadchange', function() { $(this).hide()})
    

    【讨论】:

    • 这是一个非常有用的回复。但是,我的问题似乎是 javascript 无法绑定到类 cloudinary-fileupload。如果我绑定到文档,则回调起作用。关于导致类 cloudinary-fileupload 不可绑定的问题的任何想法?
    • 问题是您的 javascript 在加载 DOM 之前运行,因此 .cloudinary-fileupload 上没有匹配项。如果您使用 $(document).ready(function() { }) 将 items.js 中的所有代码包装起来,它就可以正常工作。
    • 谢谢,这解决了我的绑定问题。我对持久“未选择文件”消息的另一个问题实际上是由于 Chrome 和 Safari 处理此输入字段的方式,它可以通过样式来缓解。
    【解决方案2】:

    当使用基于 jQuery 的直接图像从浏览器上传到 Cloudinary 时,上传过程会在使用文件输入字段选择或拖动图像后立即开始。 您的表单将使用直接上传的图像的标识符进行更新。

    上传完成后默认显示一个新的文件输入框,所以不显示文件名。

    您可以绑定到cloudinarydone 事件,如relevant blog postOther development frameworks and advanced usage 下的示例代码所示。收到此事件时,您可以隐藏文件输入字段并显示上传图像的预览缩略图。

    【讨论】:

    • 我将研究高级使用案例。但是,上传过程结束后,在我的情况下不会显示新的文件输入字段。关于为什么会发生这种情况的任何想法?
    猜你喜欢
    • 2018-08-10
    • 2020-04-28
    • 2016-06-19
    • 2020-09-22
    • 2021-10-31
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    • 2019-01-24
    相关资源
    最近更新 更多