ruby-on-rails – 使用法拉第作为参数发布图像
发布时间:2020-12-17 02:44:11 所属栏目:百科 来源:网络整理
导读:我有旧服务和新服务,上面有图片.我想将图像从旧迁移到新的.为此我需要从我的旧服务中获取图像,然后将其发布到新的sinatra服务. 我能够以我想要使用NET :: HTTP的格式发布图像 url = URI.parse('http://0.0.0.0:9292/') File.open("./Belgium.png") do |jpg|
我有旧服务和新服务,上面有图片.我想将图像从旧迁移到新的.为此我需要从我的旧服务中获取图像,然后将其发布到新的sinatra服务.
我能够以我想要使用NET :: HTTP的格式发布图像 url = URI.parse('http://0.0.0.0:9292/') File.open("./Belgium.png") do |jpg| req = Net::HTTP::Post::Multipart.new url.path,{"image" => UploadIO.new(jpg,"image/jpeg","Belgium.jpg"),id:4234} res = Net::HTTP.start(url.host,url.port) do |http| http.request(req) end end 我在Sinatra服务上用post post方法得到的参数是 params = {"image"=> {:filename=>"Belgium.jpg",:type=>"image/jpeg",:name=>"image",:tempfile=> #<File:/var/folders/h7/f9cvygqs3lg78kwh24v8yzp80000gn/T/RackMultipart20120827-76057-1f3inkn>,:head=> "Content-Disposition: form-data; name="image";filename="Belgium.jpg"rnContent-Length: 28228rnContent-Type: image/jpegrnContent-Transfer-Encoding: binaryrn"},"id"=>"4234"} 但我无法用法拉第获得相同的结果.我尝试过使用类似的东西: payload = { :profile_pic => Faraday::UploadIO.new('avatar.jpg','image/jpeg') } Faraday.post 'http://0.0.0.0:9292/',payload 在我的服务中我得到这样的东西: 我怎样才能获得与Net :: HTTP相同的行为.我认为它已经用中间件做了一些事情,我试过调整,但我仍然是一个新手. 解决方法
关于什么:
conn = Faraday.new(:url => 'http://0.0.0.0:9292' ) do |faraday| faraday.request :multipart end payload = { :profile_pic => Faraday::UploadIO.new('avatar.jpg','image/jpeg') } conn.post 'http://0.0.0.0:9292/',payload (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |