2013-10-11 30 views
0

我在將Cloudinary Javascript上傳到他們的服務器時遇到了一些麻煩。Rails:Cloudinary Uploader無法上傳

我跟着鋼軌方向從他們的博客文章: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寶石使用?

該項目使用Rails 4和Ruby 2.

任何其他的想法,將不勝感激。

編輯1

由於下面我用的開發工具的意見。兩種結果:

  1. 檢查網絡,當我嘗試上傳時沒有發生任何活動。
  2. 雖然所有由Cloudinary所需的庫被加載,有一些JavaScript錯誤

    未捕獲的類型錯誤:對象功能(選擇器,上下文){返回新jQuery.fn.init(選擇器,上下文);}沒有方法 'ajaxTransport' jquery.iframe-transport.js:38

    未捕獲的類型錯誤:無法設置屬性未定義jquery.fileupload.js的 'xhrFileUpload':33個

這些是包括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將回到空白,所以我無法保存以備後用。

+0

文件是否上傳到cloudinary服務器?如果你打開Chrome瀏覽器 - >開發者工具 - >網絡標籤,然後點擊瀏覽按鈕並選擇一個文件,它應該顯示一個上傳請求到cloudinary並且響應將是一個關鍵。 –

+0

除了上面的評論,請檢查頁面上是否有任何JS錯誤以及是否包含所有必需的JS文件。 –

+0

感謝您的提示。有兩個錯誤:Uncaught TypeError:Object function(selector,context){return new jQuery.fn.init(selector,context);} has no method'ajaxTransport'jquery.iframe-transport.js:38 Uncaught TypeError:Can not設置未定義的屬性'xhrFileUpload'jquery.fileupload.js:33 –

回答

1

你可以請檢查你是否包含jQuery(jquery.js應該包含在上面列出的四個文件之前)。

+0

就是這樣。謝謝。但是,這仍然是行爲不端。當它上傳到Cloudinary時,我沒有得到任何返回值或圖像ID。我將用這個編輯原始問題。 –

+0

您可以在網絡選項卡中驗證結果是否成功,並且JSON是否與它一起返回?另外,請確認您已綁定到cloudinarydone事件並打印到控制檯data.result –

0

這個問題很舊,但我覺得不得不回答它,因爲我剛剛遇到並自己解決了這個確切的問題。我的錯誤是我沒有在CarrierWave上傳器中註釋默認圖像存儲選項(storage:file)。

相關問題