求教:如何做图形文件的上载(Upload)

zjy 2000-07-03 03:04:00
HTML的语句:
<FORM ENCTYPE="multipart/form-data" ACTION="/cp/某个用PHP或Perl写的程序" METHOD=post>
Send this file:<INPUT NAME="userfile" TYPE="file">
<INPUT TYPE="submit" VALUE="upload">
</FORM>
这个程序如何做?我知道用C的写法,不知用脚本语言能否实现?

...全文
121 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
hiphis 2000-09-29
  • 打赏
  • 举报
回复
有没有用ASP实现的源码?
谢谢!!!
zealy 2000-07-06
  • 打赏
  • 举报
回复
看看这个perl写的例子,另外还可以用use CGI qw(:standard),道理相同;

$content_type = $ENV{'CONTENT_TYPE'};
$content_len = $ENV{'CONTENT_LENGTH'};
$host_test = $ENV{'REMOTE_ADDR'};

# Only allow localhost to upload (ONLY remove after reading
# the syshelp/security.htm documentation)
if (!($host_test eq '127.0.0.1'))
{
print "Only localhost is allowed to use this script!\n";
exit(1);
}

# Buffer the POST content
binmode STDIN;
read(STDIN, $buffer, $content_len);

if ((!$content_type) ||
($content_type eq 'application/x-www-form-urlencoded'))
{
# Process the name=value argument pairs
@args = split(/&/, $buffer);

$data = '';
foreach $pair (@args)
{
($name, $value) = split(/=/, $pair);

# Unescape the argument value
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

# Save the name=value pair for use below.
$FORM{$name} = $value;
}
}
elsif ($content_type =~ m#^multipart/form-data#)
{
# find boundary
# Eric Poulsen fixed the following to allow for quotes.
#
# ($boundary = $content_type) =~ s/^.*boundary=(.*)$/\1/;
($boundary = $content_type) =~ s/^.*boundary="?(.*?)"?$/\1/;

@pairs = split(/--$boundary/, $buffer);
@pairs = splice(@pairs,1,$#pairs-1);

for $part (@pairs)
{
($dump,$fline,$value) = split(/\r\n/,$part,3);
next if $fline =~ /filename=\"\"/;
$fline =~ s/^Content-Disposition: form-data; //;
(@columns) = split(/;\s+/, $fline);
($name = $columns[0]) =~ s/^name="([^"]+)"$/\1/g;

if ($#columns > 0)
{
if ($value =~ /^Content-Type:/)
{
($dump,$dump,$value) = split(/\r\n/,$value,3);
}
else
{
($dump,$value) = split(/\r\n/,$value,2);
}
}
else
{
($dump,$value) = split(/\r\n/,$value,2);
if (grep(/^$name$/, keys(%CGI)))
{
if (@{$FORM{$name}} > 0)
{
push(@{$FORM{$name}}, $value);
}
else
{
$arrvalue = $FORM{$name};
undef $FORM{$name};
$FORM{$name}[0] = $arrvalue;
push(@{$FORM{$name}}, $value);
}
}
else
{
next if $value =~ /^\s*$/;
$FORM{$name} = $value;
}
next;
}

$FORM{$name} = $value;
}
}
else
{
print "Invalid content type!\n";
exit(1);
}

#
# VERIFY THE FORM DATA
#
$upfile = $FORM{'upfile'};
$upname = $FORM{'upname'};
if (!($upfile) || !($upname))
{
print "<HTML><TITLE>Missing fields</TITLE><BODY>\n";
print "No upload file specified!\n";
print "</BODY></HTML>\n";
exit(1);
}


#
# CLOSE SECURITY PROBLEMS.
#
if ($upname =~ /[;><&\*'\|\/\\]/ )
{
print "<HTML><TITLE>Invalid file name</TITLE><BODY>\n";
print "The upload file name is invalid.\n";
print "</BODY></HTML>\n";
exit(1);
}

#
# Write out the upload file
#
$filename = "../docs/upload/".$upname;
open(FILE, ">$filename") || exit(1);
binmode FILE;

print FILE $upfile;
close FILE;


#
# DONE
#
print "Upload of ".$upname." succeeded.\n";

exit(0);
zjy 2000-07-06
  • 打赏
  • 举报
回复
谢谢二位,我已经试成功了!
jiangbo 2000-07-05
  • 打赏
  • 举报
回复
在 action制定的 php中

copy ($userinfo,$userinfo)
本地调试的话
就用copy ($userinfo,"$userinfo.file")

2,204

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 CGI
社区管理员
  • CGI社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧