使用rest-client上传文件

问题描述 投票:0回答:1

模型..

def self.upload_client_document(params)
  client_document = self.new :uploaded_data => params[:Filedata],:client_id => params[:client_id],:document_name => self.default_document_name,:document_description => self.default_description_name
  client_document.rename_document_name
  client_document.save!
  # RAILS_ROOT + client_document.public_filename This will return path to file like
  # C:/projects/test_project/client_documents/0000/0012/A100-bal.csv
  RestClient.post 'http://demo.testltd.com/V12345/search.aspx?username=test1&password=test2',
  :upload => File.new(RAILS_ROOT + client_document.public_filename)  
end

出现错误Errno :: ENOENT(没有这样的文件或目录-C:/projects/test_project/client_documents/0000/0012/A100-bal.csv):

但是文件夹中有文件...

任何主意吗?此代码有什么问题?我需要为rest-client进行任何修改吗?

ruby-on-rails ruby rest-client
1个回答
-1
投票

File.new创建一个文件。您要File.read

RestClient.post 'http://demo.testltd.com/V12345/search.aspx?username=test1&password=test2',
  :upload => File.read(RAILS_ROOT + client_document.public_filename)  

也:RAILS_ROOT也已被弃用。使用Rails.root另外:不应该信任client_document.public_filename不包含某些内容,例如“ ../../”

...所以...

:upload => File.read(Rails.root.join(File.basename(client_document.public_filename)))
© www.soinside.com 2019 - 2024. All rights reserved.