LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1068|回复: 7

perlCGI如何处理文件上传 (不用CGI模块)

[复制链接]
发表于 2004-7-23 15:53:11 | 显示全部楼层 |阅读模式
rt
谢谢
发表于 2004-7-30 19:08:02 | 显示全部楼层
能不能用perl 的ftp ?硖幚? 兄弟是想作webmin 般的mini server 嗎?
发表于 2004-8-1 02:00:22 | 显示全部楼层

試一下

upload.html

<FORM ACTION="upload.cgi" METHOD="OST" ENCTYPE="multipart/form-data">
<>lease choose a file to upload:
<INPUT TYPE="FILE" NAME="file">
<INPUT TYPE="SUBMIT">
</FORM

upload.cgi

#!/usr/bin/perl -wT

use strict;
use CGI ':standard';
use CGI::Carp 'fatalsToBrowser';
$|++;

my $file = upload('file');

my ($name) = param('file') =~ m|([^/:\\]+)$|;

my $dir = 'D:/Web';

my $type = uploadInfo($file)->{'Content-Type'};

open(OUT,"> $dir/$name");
binmode OUT;

my ($size,$byte,$buffer);

while ( $byte = read($file,$buffer,1024) ) {

print OUT $buffer;
$size += $byte;
}
close OUT;
close $file;

my $total_size = &size_format($size);

sub size_format {


my $size = $_[0];

if ( $size < 1024 ) { return('1K') }

elsif ( $size < 1048576 ) { return(int($size/1024 + .5) . 'K') }

else { return( (int(10 * $size/1048576 + .5) / 10) . 'MB') }


}

print header(-charset=>'big5'),

start_html('Upload File'),

h1('Upload File'),

"上傳檔案$total_size<br>",

"檔案?型$type",

end_html;
 楼主| 发表于 2004-8-4 23:00:02 | 显示全部楼层
谢谢

那么不用CGI模块该怎么做?
发表于 2004-8-6 12:01:01 | 显示全部楼层
楼上的,cafe上传部分根本没用cgi模块呀
---------------------------------
print header(-charset=>'big5'),
start_html('Upload File'),
h1('Upload File'),
----------------------------------
这三句与上传没什么关系,你也可以改写
print "Content-type: text/html\n\n";
后面两句不要也没关系
btw, cgi模块不好吗?用起来方便,基本上已经是基本配置了
 楼主| 发表于 2004-8-6 17:19:55 | 显示全部楼层
谢谢
发表于 2004-8-6 20:40:36 | 显示全部楼层

差不多吧 我想是這樣

read(STDIN,$buffer,$ENV{'CONTENT_LENGTH'});
@data = split(/&/,$buffer);
foreach $i (@data) {
($name,$value) = split(/=/,$i);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9]{2})/pack('C',kex($1))eg;
$form{$name} = $value;
}

$file = $form{'upfile'};

真是非非常常的麻煩
发表于 2004-8-10 22:24:40 | 显示全部楼层
$value =~ s/%([a-fA-F0-9]{2})/pack('C',kex($1))eg;
中的pack('C',kex($1))是啥意思啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表