Forum: Ruby WWW::Mechanize and file uploading.

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
D337e2cf7c6d03caac6988d83e0e7f66?d=identicon&s=25 Michael Guterl (Guest)
on 2006-03-30 06:00
(Received via mailing list)
Hello all, I am fairly new to Ruby and I am loving every minute of it.
I've
been doing a lot of reading on Ruby and I really like what I've seen
thus
far.  I am in the process of converting some Perl WWW::Mechanize code to
Ruby's WWW::Mechanize.  Everything was going smooth until the portion
where
I have to upload a file to the website.

Accessing page.forms[0].file_uploads[0] returns the
#<WWW::FileUpload:0x21614ec @file_data=nil, @file_name="Browse",
@name="txtUploadFile"> object.  However, I cannot determine how to set
the
path to the file that I wish to upload (the value of the textbox).

I've tried setting @file_data and @file_name to
'/Users/michaelguterl/test.txt' through the appropriate accessor method.
But each time I try and submit the form the website throws a nasty ASP
error.  I know it is possible to do what I am trying to accomplish using
this approach.  I'm just a little lost on the Ruby implementation of
WWW::Mechanize and trying to find anything on google is nearly
impossible
with all the Perl stuff out there.

Any help is appreciated.

Thanks,
Michael Guterl
D337e2cf7c6d03caac6988d83e0e7f66?d=identicon&s=25 Michael Guterl (Guest)
on 2006-03-30 22:05
(Received via mailing list)
In an attempt to provide some more useful information, here's the output
of
mechanize.

I, [2006-03-29T21:56:02.225949 #5776]  INFO -- : POST:
http://www.censored.com/Manager/Upload/
upload_1.asp?uploadType=callList&ftp=0&uploadLink=219601&CampLink=56458&ProjLink=20719&PID=477&OBS=&EBR=0&natlListLink=0


D, [2006-03-29T21:56:02.311599 #5776] DEBUG -- : query:
{"rdoFileType"=>"0",
"txtZipPassword"=>"", "selDelimiter"=>"Delimiter...", "txtRecLen"=>""}
D, [2006-03-29T21:56:02.312981 #5776] DEBUG -- : request-header: accept
=>
*/*
D, [2006-03-29T21:56:02.314092 #5776] DEBUG -- : request-header:
content-type => application/x-www-form-urlencoded

Here's the webserver's exact response.

=> #<WWW::Page:0x20c6b04 @response=#<Net::HTTPOK 200 OK readbody=true>,
@cookies=[], @uri=#<URI::HTTP:0x106388e URL:
http://www.censored.com/Manager/Upload/upload_1.as...,
@code="200", @body="<B>WebServer ProcessRequest error</B><BR>006~ASP
0243~Cannot use IStream on Request~Cannot use IStream on Request object
after using Request.Form collection or Request.BinaryRead. (
SoftArtisans.FileUpEe.1)", @watch_for_set=nil>

I don't know much about what's going on behind the scenes here, but the
only
thing apparent to me is the lack of anything related to the FileUpload
in
the query hash.  Again, let me reiterate, I'm not sure what is going on
behind the scenes, so that could be expected.

I'm going to keep hacking away as soon as I get home tonight, so I'll
post
an update if I get anywhere.

Thanks,
Michael Guterl
This topic is locked and can not be replied to.