ruby – 使用法拉第上传文件
发布时间:2020-12-16 20:54:36 所属栏目:百科 来源:网络整理
导读:我在尝试使用Faraday将文件上传到Web服务时遇到问题. 我的代码: conn = Faraday.new('http://myapi') do |f| f.request :multipartendpayload = { :file = Faraday::UploadIO.new('...','image/jpeg') }conn.post('/',payload) 尝试发布后似乎没有任何事情
我在尝试使用Faraday将文件上传到Web服务时遇到问题.
我的代码: conn = Faraday.new('http://myapi') do |f| f.request :multipart end payload = { :file => Faraday::UploadIO.new('...','image/jpeg') } conn.post('/',payload) 尝试发布后似乎没有任何事情发生.当我检查响应this是我所看到的: #<Faraday::Response:0x007fd9e5903870 @env={:method=>:post,:body=>#<Faraday::CompositeReadIO:0x007fd9e5903a50 @parts=[#<Parts::FilePart:0x007fd9e5903e38 @head="-------------RubyMultipartPostrnContent-Disposition: form-data; name="file"; filename="indymade-badge-horizontal.png"rnContent-Length: 7821rnContent-Type: image/pngrnContent-Transfer-Encoding: binaryrnrn",@foot="rn",@length=8026,@io=#<CompositeReadIO:0x007fd9e5903b68 @ios=[#<StringIO:0x007fd9e5903bb8>,#<UploadIO:0x007fd9e514a3b8 @content_type="image/png",@original_filename="indymade-badge-horizontal.png",@local_path="/Users/anthonator/Downloads/indymade-badge-horizontal.png",@io=#<File:/Users/anthonator/Downloads/indymade-badge-horizontal.png>,@opts={}>,#<StringIO:0x007fd9e5903b90>],@index=0>>,#<Parts::EpiloguePart:0x007fd9e5903ac8 @part="-------------RubyMultipartPost--rnrn",@io=#<StringIO:0x007fd9e5903a78>>],@ios=[#<CompositeReadIO:0x007fd9e5903b68 @ios=[#<StringIO:0x007fd9e5903bb8>,@index=0>,#<StringIO:0x007fd9e5903a78>],:url=>#<URI::HTTPS:0x007fd9e5909d60 URL:https://myapi>,:request_headers=>{"User-Agent"=>"Faraday v0.8.7","Content-Type"=>"multipart/form-data;boundary=-----------RubyMultipartPost","Content-Length"=>"8062"},:parallel_manager=>nil,:request=>{:proxy=>nil,:boundary=>"-----------RubyMultipartPost"},:ssl=>{},:response=>#<Faraday::Response:0x007fd9e5903870 ...>},@on_complete_callbacks=[]> irb(main):065:0> response.inspect => "#<Faraday::Response:0x007fd9e5903870 @env={:method=>:post,:body=>#<Faraday::CompositeReadIO:0x007fd9e5903a50 @parts=[#<Parts::FilePart:0x007fd9e5903e38 @head="-------------RubyMultipartPostrnContent-Disposition: form-data; name="file"; filename="indymade-badge-horizontal.png"rnContent-Length: 7821rnContent-Type: image/pngrnContent-Transfer-Encoding: binaryrnrn",@foot="rn",#<UploadIO:0x007fd9e514a3b8 @content_type="image/png",@original_filename="indymade-badge-horizontal.png",@local_path="/Users/anthonator/Downloads/indymade-badge-horizontal.png",#<Parts::EpiloguePart:0x007fd9e5903ac8 @part="-------------RubyMultipartPost--rnrn",:request_headers=>{"User-Agent"=>"Faraday v0.8.7","Content-Type"=>"multipart/form-data;boundary=-----------RubyMultipartPost","Content-Length"=>"8062"},:boundary=>"-----------RubyMultipartPost"},@on_complete_callbacks=[]>" 正在将正文设置为CompositeReadIO对象,它似乎永远不会发送请求. 解决方法
事实证明,我需要指定一个适配器.这是最终工作的代码.
conn = Faraday.new('http://myapi') do |f| f.request :multipart f.request :url_encoded f.adapter :net_http # This is what ended up making it work end payload = { :file => Faraday::UploadIO.new('...',payload) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- iphone – 进入后台时MPMoviePlayerViewController变黑
- 域驱动设计 – DDD和MDD之间的差异
- 基于cocos2dx的飞机大战学习[四]-添加英雄子弹
- c# – Threadsafe foreach列举列表
- C89(C90)、C99、C11——C语言的三套标准
- ruby-on-rails – Apache:无效命令’RailsEnv’,可能拼写错
- 为什么“const int *”指向非const int?
- 引用xml命名空间问题
- ruby-on-rails – 在Spree(RoR)中保存产品时价格乘以100
- ios – UIImage无法在Xcode 6.3.1 Playground中渲染