[英]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團隊聯系,並商定所需的格式:
item.cover = params[:img]
) HTH
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.