【问题标题】:Rails: Cloudinary Uploader Not UploadingRails:Cloudinary Uploader 未上传
【发布时间】:2013-10-19 05:54:24
【问题描述】:

我在将 Cloudinary Javascript 上传到他们的服务器时遇到了一些问题。

我遵循了他们博客文章中关于 Rails 的说明:http://cloudinary.com/blog/direct_image_uploads_from_the_browser_to_the_cloud_with_jquery

我最终得到了页面上的基本选择文件按钮。单击它可以让我浏览并选择一个图像,但除了在按钮旁边显示文件名之外,没有其他任何反应。之后查看媒体库显示没有上传任何内容。

查看我看到的表单的页面源代码:

<script type="text/javascript">$.cloudinary.config({"api_key":"xxxxxxxxxxxxx","cloud_name":"xxxxxxx"});</script>

<form accept-charset="UTF-8" action="/admin/settings/update" class="new_settings" id="new_settings" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="&#x2713;" /><input name="authenticity_token" type="hidden" value="wwgaFBlShaTklqEY7sz6xwhpK6JKtNNMFvnNJCX4zS0=" /></div>
<input class="cloudinary-fileupload" data-cloudinary-field="settings[image_id]" data-form-data="{&quot;timestamp&quot;:1381477800,&quot;callback&quot;:&quot;http://127.0.0.1:3000/cloudinary_cors.html&quot;,&quot;use_filename&quot;:1,&quot;folder&quot;:&quot;wtdu/header&quot;,&quot;signature&quot;:&quot;xxxxxxxxxx&quot;,&quot;api_key&quot;:&quot;xxxxxxx&quot;}" data-url="https://api.cloudinary.com/v1_1/xxxxxxxx/auto/upload" name="file" type="file"></input>
<input name="commit" type="submit" value="Create Settings" />
</form>

cloudinary 输入字段中的数据已被清理,应该发生这种情况吗?

我确实添加了一个提交按钮,但这并没有影响任何事情。没想到,因为图片应该是从浏览器上传的,而不是控制器中的更新方法。

只是一个想法。我正在使用 jquery-rails gem。这是要使用的正确 jquery gem 吗?

该项目使用 Rails 4 和 Ruby 2。

任何其他想法将不胜感激。

编辑 1

感谢下面的 cmets,我使用了开发人员工具。两个结果:

  1. 检查网络,我尝试上传时未发生任何活动。
  2. 虽然Cloudinary需要的所有库都加载了,但是还是有一些javascript错误

    Uncaught TypeError: Object function (selector,context){return new jQuery.fn.init(selector,context);} has no method 'ajaxTransport' jquery.iframe-transport.js:38

    未捕获的类型错误:无法设置未定义 jquery.fileupload.js:33 的属性“xhrFileUpload”

这些是包含的 JS 文件

<script src="/javascripts/jquery.ui.widget.js"></script>
<script src="/javascripts/jquery.iframe-transport.js"></script>
<script src="/javascripts/jquery.fileupload.js"></script>
<script src="/javascripts/jquery.cloudinary.js"></script>

编辑 2

原来 jquery.js 没有被包括在内,虽然有一个 google.load("jquery", "1.2.6");页面源码中的声明。

一旦我包含 jquery.js,它就开始上传到 Cloudinary。感谢大家的帮助。

但是,我仍然遇到一些问题。一旦上传包含,返回 200 OK,我没有得到返回值。图像 id 是空的,所以我不能存储它以供以后使用。

【问题讨论】:

  • 文件上传到云服务器了吗?如果您打开 Chrome -> 开发人员工具 -> 网络选项卡,然后单击浏览按钮并选择一个文件,它应该会向 cloudinary 显示一个上传请求,并且响应将是一个键。
  • 除了上面的注释,请检查页面是否有JS错误,是否包含了所有需要的JS文件。
  • 感谢您的提示。有两个错误: Uncaught TypeError: Object function (selector,context){return new jQuery.fn.init(selector,context);} has no method 'ajaxTransport' jquery.iframe-transport.js:38 Uncaught TypeError: Cannot set未定义 jquery.fileupload.js:33 的属性“xhrFileUpload”

标签: javascript jquery ruby-on-rails cloudinary


【解决方案1】:

能否请您检查是否包含了 jQuery(jquery.js 应该包含在上面列出的四个文件之前)。

【讨论】:

  • 就是这样。谢谢。但是,它仍然行为不端。当它上传到 Cloudinary 时,我没有得到任何返回值或图像 ID。我将用这个编辑原始问题。
  • 能否请您在网络选项卡中验证结果是否成功,并且返回了 JSON?另外,请验证您是否绑定到 cloudinarydone 事件并打印到控制台 data.result
【解决方案2】:

这个问题很老,但我觉得有必要回答它,因为我自己刚刚遇到并解决了这个确切的问题。我的错误是我没有注释掉 CarrierWave 上传器中的默认图像存储选项(storage :file)。

【讨论】:

    猜你喜欢
    • 2013-07-22
    • 1970-01-01
    • 2015-08-20
    • 2012-10-30
    • 2018-01-02
    • 1970-01-01
    • 1970-01-01
    • 2018-01-28
    • 2014-07-10
    相关资源
    最近更新 更多