Also,
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'
open-uri is actually not necessary; left over from my script.
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 + " " )
The boundary stuff is the delicate part here. If something is wrong, this would be where it would be, I think.
Cheers,
patrick
···
On Sunday, September 26, 2004, at 11:34 AM, Patrick May wrote: