From: Patrick May Date: 2004-09-27T00:34:04+09:00 Subject: Re: Uploading a multipart form with Net::HTTP Austin, This stuff might be useful. This was part of a wiki migration script. I modified it so you wouldn't have to install narf to use it, but you'll need to find a replacement for Web::Mime::get_mime_type in FileParam#to_multipart. Or you could hard code the mime-type. Cheers, Patrick ------------------ require 'open-uri' require 'net/http' require 'cgi' def post( query, headers={} ) Net::HTTP.start( "www.yourserver.com", 80 ) { |h| h.post( "/cgi-bin/your_script.rb", query, headers ) } end class Param attr_accessor :k, :v def initialize( k, v ) @k = k @v = v end def to_multipart return "Content-Disposition: form-data; name=\"#{CGI::escape(k)}\"\r\n\r\n#{v}\r\n" end end class FileParam attr_accessor :k, :filename, :content def initialize( k, filename, content ) @k = k @filename = filename @content = content end def to_multipart return "Content-Disposition: form-data; name=\"#{CGI::escape(k)}\"; filename=\"#{filename}\"\r\n" + "Content-Transfer-Encoding: binary\r\n" + "Content-Type: #{Web::Mime.get_mime_type(filename)}\r\n\r\n" + content + "\r\n" end end filename = 'some_image.jpg' content = open( 'some_image.jpg' ) { |f| f.read } boundary = "7d21f962d00c4" params = [ Param.new( "action", "Upload" ), FileParam.new( "upload", filename, content ) ] query = params.collect { |p| "--" + boundary + "\r\n" + p.to_multipart }.join("") + "--" + boundary + "--" resp, data = post( query, "Content-type" => "multipart/form-data, boundary=" + boundary + " " ) On Sunday, September 26, 2004, at 10:22 AM, Austin Ziegler wrote: > Did anyone ever figure this out? > > Chris Morris had a message that indicated that he couldn't get it > working, back in 2003. I have a desparate need for this to work, and > I'm not really sure where to begin. > > -austin > -- > Austin Ziegler * halostatue@gmail.com > * Alternate: austin@halostatue.ca > : as of this email, I have [ 6 ] Gmail invitations >