Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Read STDIN in perl/NT

Posted on 1998-09-12
6
639 Views
Last Modified: 2008-02-01
I am trying to read STDIN with the following code:  It worked on unix system but now does not work on NT.  STDIN contains a .jpg file of about 10K.  How can I get STDIN into $input??
$len = 0;
 $input = '';
while ($len != $ENV{'CONTENT_LENGTH'}) {
 $buf = '';
 $len += sysread(STDIN, $buf, $ENV{'CONTENT_LENGTH'});
 $input .= $buf;
}

0
Comment
Question by:donb1
  • 3
  • 3
6 Comments
 
LVL 28

Expert Comment

by:sybe
ID: 1204838
you have to use binmode on NT when it's about binary data.

like in here:

open(OUTFILE, ">upload/test.gif");
binmode (OUTFILE);
syswrite (OUTFILE, $in{'upfile'}, length $in{'upfile'});
close(OUTFILE);


0
 

Author Comment

by:donb1
ID: 1204839
I am trying to upload a gif file over the internet to a particular folder in NT.  I use a form:
<form action="pictur.pl" method="POST" enctype="multipart/form-data">
The gif file should be in <STDIN> along with some other form data --  How do I get it out of <STDIN>?  On a unix system, I use the code in my original question.  On an NT sysem, I only get a very small part of it (and even text is limited to about 4K).

0
 
LVL 28

Accepted Solution

by:
sybe earned 50 total points
ID: 1204840
I use cgi-lib to do that:

this is the code for the perl file:

require "./cgi-lib.pl";
$cgi_lib'maxdata = 50000;         
$ret = &ReadParse;
open(OUTFILE, ">upload/test.gif");
binmode (OUTFILE);
syswrite (OUTFILE, $in{'upfile'}, length $in{'upfile'});
close(OUTFILE);

print &PrintHeader;
print &HtmlTop("File Upload Results");

print "$in{'upfile'}";

print "\n<P>File was uploaded<P>";


print &HtmlBot;

===========

See for cgi-lib.pl:
http://www.bio.cam.ac.uk/cgi-lib/
0
Networking for the Cloud Era

Join Microsoft and Riverbed for a discussion and demonstration of enhancements to SteelConnect:
-One-click orchestration and cloud connectivity in Azure environments
-Tight integration of SD-WAN and WAN optimization capabilities
-Scalability and resiliency equal to a data center

 

Author Comment

by:donb1
ID: 1204841
OK, that really works great.  One more question,
How can I get the name of the file that the person sent?
ie, the form field is a "file" field and contains the name of the file he uploaded.  $in{'upfile'} is the file itself.  I also need the name of the file, if possible.
Thanks
0
 
LVL 28

Expert Comment

by:sybe
ID: 1204842
ok

In the perlscript, change

$ret = &ReadParse;

to:

$ret = &ReadParse(\%cgi_data,\%cgi_cfn,\%cgi_ct,\%cgi_sfn);

The the complete path of the uploaded file can be retrieved by:

$cgi_cfn{'upfile'}

You'll have to do some string processing before you have the actual name (because it is the complete path !).

See also http://cgi-lib.stanford.edu/cgi-lib/ex/perl5/fup.cgi.txt

(that's where I got it from)


0
 

Author Comment

by:donb1
ID: 1204843
Thanks very much
0

Featured Post

Free Tool: ZipGrep

ZipGrep is a utility that can list and search zip (.war, .ear, .jar, etc) archives for text patterns, without the need to extract the archive's contents.

One of a set of tools we're offering as a way to say thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
crawling gofundme 4 132
grep that displays 4 lines above & 1 line below of what's found 10 84
instmodsh - listing perl modules 2 83
read an xml file in perl 2 49
A year or so back I was asked to have a play with MongoDB; within half an hour I had downloaded (http://www.mongodb.org/downloads),  installed and started the daemon, and had a console window open. After an hour or two of playing at the command …
In the distant past (last year) I hacked together a little toy that would allow a couple of Manager types to query, preview, and extract data from a number of MongoDB instances, to their tool of choice: Excel (http://dilbert.com/strips/comic/2007-08…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…

790 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question