簡體   English   中英

使用Carrierwave將圖像從iPhone應用程序上傳到Rails應用程序

[英]Uploading an image from an iphone app to a rails app with carrierwave

我正在嘗試使用載波通過內部API將圖像從iPhone應用程序發送到Rails應用程序。 我將大多數代碼與其他有關堆棧溢出的問題和在線示例放在一起,在此之前,我從未做過此類事情。 我沒有iPhone代碼,因為我們正在外包它,但是我可以得到它。

我的ApiController中接收請求的代碼如下所示:

  def create_item
    @item = upload_image(params[:img], params[:name], params[:content_type], params[:file_size])
  end

  private

  def upload_image(img, name, content_type, file_size)
    encoded_img = Base64.encode64(img)
    io = FilelessIO.new(Base64.decode64(encoded_img))
    io.original_filename = "#{name}"
    item = Item.new

    item.cover = io
    item.content_type = content_type
    item.file_size = file_size
    item.save!(validate: false)
    item
  end

當他們發送請求時,參數看起來像下面的代碼,並給他們500錯誤。

Parameters: {"img"=>#<ActionDispatch::Http::UploadedFile:0x007fc3b1f4f570 @original_filename="avatar.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"img\"; filename=\"avatar.png\"\r\nContent-Type: image/png\r\n", @tempfile=#<Tempfile:/tmp/RackMultipart20130703-2-hfx7gg>>;, "controller"=>"api/v1/api", "action"=>"create_item", "uid"=>"100003052137695"}

我得到的錯誤是:

  no implicit conversion of ActionDispatch::Http::UploadedFile into String
  vendor/ruby-2.0.0/lib/ruby/2.0.0/base64.rb:38:in `pack'

您收到的錯誤表明iPhone正在發送實際文件,而您希望它從代碼中發送Base64字符串。

請與您的iPhone團隊聯系,並商定所需的格式:

  1. 他們發送Base64字符串,您應該克服此錯誤
  2. 您更改代碼以接受文件(類似item.cover = params[:img]

HTH

暫無
暫無

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

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