簡體   English   中英

將文件從客戶端上傳到Ruby on Rails Server到Amazon S3

[英]Uploading File from Client to Ruby on Rails Server to Amazon S3

我在一個需要文件樹進行文件管理的網站上工作,並且在將文件放入我的Amazon S3存儲桶時遇到麻煩。

我的方法是讓用戶從客戶端將文件上傳到我編寫的jQuery插件中。 該插件會提取所有文件,並將它們打包到一個Ajax調用中,該調用將被發送到我的內部API,然后由該內部API處理這些文件。

從這里開始,文件進入我的S3上傳邏輯,但是在這里我開始遇到問題。 一旦對象進入我的服務器,它就會以分開的形式出現,我不確定哪些部分是必需的。 Ajax做到了魔術,將文件分解成JSON可讀數組,但是現在它以一種新形式出現,我不確定如何處理它。

每當我將文件上傳到S3服務器時,都會顯示以下內容。

no implicit conversion of Fixnum into String"

鑒於我只是將文件的新格式化數組放入S3邏輯中,但我不知道該怎么做。 到目前為止,解決方案的所有其他部分都可以正常運行,因為我可以將字符串保存到S3存儲桶中沒有問題。 所以我的問題是,我怎樣才能將文件對象傳遞到Rails中,然后再傳遞到S3中? 我需要什么格式?

以下是我用於上傳文件的API方法的代碼。

def upload_files

    s3 = Aws::S3::Resource.new
    s3_bucket =  s3.bucket(S3_BUCKET_NAME)

    debug_var = @request

    i = 0
    while i < request['file_count'].to_i  do

      # Make an object in your bucket for your upload
      file_id = SecureRandom.uuid

      # Upload the file
      s3_bucket.put_object({
          key: file_id,
          body: @request['file_' + i]
                           })

      i = i + 1
    end

這是傳遞給服務器的文件數據的屏幕快照。

在此處輸入圖片說明

該行中發生錯誤:

# Implicit conversion of int i to a string:
body: @request['file_' + i]

要解決此問題,請執行以下操作:

# Explicit conversion (i.to_s) *is* allowed:
body: @request['file_' + i.to_s]

要么:

# String interpolation implicitly converts int to string:
body: @request["file_#{i}"]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM