0

我在将 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>

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

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

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

该项目使用 Rails 4 和 Ruby 2。

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

编辑 1

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

  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 是空的,所以我不能存储它以备后用。

4

2 回答 2

1

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

于 2013-10-12T20:11:56.257 回答
0

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

于 2016-07-24T23:40:36.900 回答