- 论坛徽章:
- 0
|
本帖最后由 shiru 于 2010-12-20 10:07 编辑
感谢仙子,实现了我需要的功能,现公开我的思路,大家参考还有更好的方法没。
我的目的主要是想实现用户登录后,能依据用户信息,下载不同文档,需要验证用户信息,否则不能下载。
- use myModule;
- my $q = myModule->cgi();
- #####获取Form表单值####
- my %FORM = $q->get_params();
- my $ss_id = $FORM{ss_id};
- # 验证用户登录
- my %session = myModule->verify_login($ss_id);
- my $d_id = $session{d_id};
- my $path = '/var/.../down/';
- if ( $d_id == 1 ) {
- $infilename = 'a.zip';
- $name_zip = '文件一';
- } elsif ( $d_id == 2 ) {
- $infilename = 'b.zip';
- $name_zip = '文件二';
- }
- $q->print_header_zip($name_zip);
- binmode STDOUT;
- open(FIN,"$path$infilename") or die ("can not open $infilename\n");
- binmode FIN;
- while ( read(FIN, my $buffer, 1024) ) {
- print STDOUT $buffer;
- }
- close(STDOUT);
复制代码 print_header_zip 方法实现打印文件头:
- package myModule::CGI;
- use warnings;
- use strict;
- use CGI qw(:standard);
- ……
- sub print_header_zip {
- my $self = shift;
- my $name = shift;
- my $header = $self->{q}->header(
- -type => 'application/zip',
- -charset => 'gb2312',
- -attachment => $name.'.zip',
- );
- print $header;
- return;
- }
- ……
- 1;
复制代码 这样就隐藏了具体文件路径,放在apache不能访问的路径上。 文件直接采用文件流输入的方式。 |
评分
-
查看全部评分
|