免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5366 | 回复: 0
打印 上一主题 下一主题

怎么使用CGI模块?(2)<转自雷傲论坛> [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2001-11-16 18:28 |只看该作者 |倒序浏览
怎么使用CGI模块?(2)
四,实现文件上传功能

在PHP中要实现基于WEB的文件上传是非常容易的,但是PERL却没有那么简单,需要获取表单中要上传的文件,然后采用read函数读取,然后写入服务器上的文件。对一些初学者来说,这样的代码具有一定的难度。但是使用CGI模块的话,一切将迎刃而解。下面我们还是通过演示的方式介绍给大家:

#==========[HTML]==========#
<form method=&quot;post&quot; action=&quot;file.pl&quot; enctype=&quot;multipart/form-data&quot;>;
<input type=&quot;file&quot; name=&quot;FILE_NAME&quot;>;
</form>;

我们在上面的HTML页面中设置了一个叫FILE_NAME的文件域,通过这个域可以选择本地机器上的任何文件,下面是一段完整的实现文件上传的PERL代码:

#==========[PERL]==========#
#!/usr/bin/perl

############################
# 代码:文件上传
# 作者:王骜骋
############################

use CGI qw/:standard/; # 使用CGI模块

my $cgi = new CGI; # 建立一个新的对象

my $filename = $cgi->;param('FILE_NAME'); # 获取表单中的FILE_NAME域

print $cgi->;header(&quot;text/html; charset=gb2312&quot; # 输出HTML头,编码为简体中文

&amp;error(&quot;请选择一个文件!&quot if ($filename eq &quot;&quot; # 如果没有选择文件就提交返回错误信息

my $type = $cgi->;uploadInfo($filename)->;{'Content-Type'}; # 获取上传文件的类型

my $want = &quot;image/pjpeg&quot;; # 你需要用户上传的文件类型,我们这里只能让用户上传JPEG图片

&amp;error(&quot;系统只允许你上传JPEG图片&quot if ($type ne $want); # 如果文件类型不符合返回错误

open (OUTFILE,&quot;>;>;./YOUR_FILE_NAME.jpg&quot; # 写入到服务器的本地文件

binmode(OUTFILE); # 文件句柄设置为二进制模式

while (my $bytesread=read($filename,$buffer,1024)) {

print OUTFILE $buffer;

}

close(OUTFILE); # 关闭文件

print &quot;文件上传成功!&quot;;

sub error {

print $_[0];
exit;

}


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP