perl檔案上傳程式,支援多檔案! (轉)
perl檔案上傳程式,支援多檔案! (轉)[@more@]一個真正支援二進位制,允許多檔案上傳,可以對檔案字尾進行限制,生成完整資訊的小。。:)
其實是我看了精華區的那篇檔案上傳檔案後,感覺有點問題,所以特此更正一下,在此也感謝以前無私奉獻的各位兄弟。。
原先的上傳由於沒有采用binmode方法,所以如果上傳圖片或二進位制檔案都會出錯,現在這個都已經解決了,而且還可以多檔案同時上傳。。:)另外加了註釋。
最後,我是一個新手,如有不當,還望各位高手指點一二,小生不勝感激:)
程式碼如下:
default.htm:
File 1:
File 2:
ps.pl:
#如果用CGI方式來行動這個檔案,請把下段路徑改成你的機器
#!f:/activeperl/bin/perl
use CGI;
$upfilecount = 1;
$maxuploadcount = 2; #限制上傳檔案的最大數
$basedir = "c:/perltest/perlupload"; #上傳的檔案存放地址
$allowall = "no"; #是否不限制檔案字尾上傳
@theext =(".zip",".exe",".gif"); #要限制的檔案字尾名
print "Content-type: text/htmlnn";
while ($upfilecount <= $maxuploadcount) {
my $req = new CGI;
my $file = $req->param("FILE$upfilecount");
if ($file ne "") {
my $fileName = $file;
$fileName =~ s/^.*(|/)//; #用正則去除無用的路徑名,得到檔名
my $newmain = $fileName;
my $filenotgood;
if ($allowall ne "yes") {
$extname = lc(substr($newmain,length($newmain) - 4,4)); #取字尾名
for(my $i = 0; $i < @theext; $i++){ #這段進行字尾名檢測
if ($extname eq $theext[$i]){
$filenotgood = "yes";
last;
}
}
}
if ($filenotgood ne "yes") { #這段開始上傳
open (OUTFILE, ">$basedir/$fileName");
binmode(OUTFILE); #務必全用二進位制方式,這樣就可以放心上傳二進位制檔案了。而且文字檔案也不會受干擾
while (my $bytesread = read($file, my $buffer, 1024)) {
print OUTFILE $buffer;
}
close (OUTFILE);
$message.=$file . " 已成功上傳!
n";
}
else{
$message.=$file . " 檔案字尾不符合要求,上傳失敗!
n";
}
}
$upfilecount++;
}
print $message; #最後輸出上傳資訊
< script language="script">ShowReply('','donald','2001.03.19 15:39');
我已經照這個方法做了,也顯示成功上傳,但為什麼我找不到傳上取得檔案,請大哥大姐們幫幫我。
< script language="">ShowReply('','pan','2001.04.27 11:07');
有一行錯了
if ($filenotgood ne "yes") { #這段開始上傳
這行“ne”應該是“eq”,否則,符合檔案字尾的檔案會報上傳失敗,
不符合的反而能成功。
回應人:kyo 回應時間:2001.06.13 12:30:35
I can not find the uploaded file also
CGI模組早就提供了上傳的辦法。
其實是我看了精華區的那篇檔案上傳檔案後,感覺有點問題,所以特此更正一下,在此也感謝以前無私奉獻的各位兄弟。。
原先的上傳由於沒有采用binmode方法,所以如果上傳圖片或二進位制檔案都會出錯,現在這個都已經解決了,而且還可以多檔案同時上傳。。:)另外加了註釋。
最後,我是一個新手,如有不當,還望各位高手指點一二,小生不勝感激:)
程式碼如下:
default.htm:
File 1:
File 2:
ps.pl:
#如果用CGI方式來行動這個檔案,請把下段路徑改成你的機器
#!f:/activeperl/bin/perl
use CGI;
$upfilecount = 1;
$maxuploadcount = 2; #限制上傳檔案的最大數
$basedir = "c:/perltest/perlupload"; #上傳的檔案存放地址
$allowall = "no"; #是否不限制檔案字尾上傳
@theext =(".zip",".exe",".gif"); #要限制的檔案字尾名
print "Content-type: text/htmlnn";
while ($upfilecount <= $maxuploadcount) {
my $req = new CGI;
my $file = $req->param("FILE$upfilecount");
if ($file ne "") {
my $fileName = $file;
$fileName =~ s/^.*(|/)//; #用正則去除無用的路徑名,得到檔名
my $newmain = $fileName;
my $filenotgood;
if ($allowall ne "yes") {
$extname = lc(substr($newmain,length($newmain) - 4,4)); #取字尾名
for(my $i = 0; $i < @theext; $i++){ #這段進行字尾名檢測
if ($extname eq $theext[$i]){
$filenotgood = "yes";
last;
}
}
}
if ($filenotgood ne "yes") { #這段開始上傳
open (OUTFILE, ">$basedir/$fileName");
binmode(OUTFILE); #務必全用二進位制方式,這樣就可以放心上傳二進位制檔案了。而且文字檔案也不會受干擾
while (my $bytesread = read($file, my $buffer, 1024)) {
print OUTFILE $buffer;
}
close (OUTFILE);
$message.=$file . " 已成功上傳!
n";
}
else{
$message.=$file . " 檔案字尾不符合要求,上傳失敗!
n";
}
}
$upfilecount++;
}
print $message; #最後輸出上傳資訊
< script language="script">ShowReply('','donald','2001.03.19 15:39');
我已經照這個方法做了,也顯示成功上傳,但為什麼我找不到傳上取得檔案,請大哥大姐們幫幫我。
< script language="">ShowReply('','pan','2001.04.27 11:07');
有一行錯了
if ($filenotgood ne "yes") { #這段開始上傳
這行“ne”應該是“eq”,否則,符合檔案字尾的檔案會報上傳失敗,
不符合的反而能成功。
回應人:kyo 回應時間:2001.06.13 12:30:35
I can not find the uploaded file also
CGI模組早就提供了上傳的辦法。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-991360/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- SpringMVC 單檔案上傳與多檔案上傳SpringMVC
- LayUI多檔案上傳,支援歷史上傳預覽UI
- laravel 多檔案上傳Laravel
- SpringMVC檔案上傳下載(單檔案、多檔案)SpringMVC
- MVC檔案上傳 - 使用Request.Files上傳多個檔案MVC
- php檔案上傳之多檔案上傳PHP
- php多個檔案上傳PHP
- PHP實現單檔案、多檔案上傳 封裝 物件導向實現檔案上傳PHP封裝物件
- Java大檔案上傳、分片上傳、多檔案上傳、斷點續傳、上傳檔案minio、分片上傳minio等解決方案Java斷點
- 檔案上傳用XML (轉)XML
- 使用XML上傳檔案 (轉)XML
- HttpFileCollection 實現多檔案上傳HTTP
- 【Jeffrey Zhao 】讓UpdatePanel支援上傳檔案
- 微信小程式介面請求/form-data/單檔案、多檔案上傳微信小程式ORM
- 單個檔案上傳和批量檔案上傳
- 檔案上傳
- 小程式之檔案上傳
- javaWeb上傳檔案程式碼JavaWeb
- [轉] PERL模擬飛鴿傳書檔案傳輸總結
- Android WebView 上傳檔案支援全解析AndroidWebView
- perl檔案操作
- 檔案上傳之三基於flash的檔案上傳
- ASP中多檔案同時上傳解決方案 (轉)
- 在ASP.NET中實現多檔案上傳 (轉)ASP.NET
- Flask——檔案上傳Flask
- PHP上傳檔案PHP
- JavaScript 檔案上傳JavaScript
- Git上傳檔案Git
- YII檔案上傳
- 檔案上傳概述
- beego上傳檔案Go
- 上傳檔案流程
- 上傳EXCLE檔案
- PHP 檔案上傳PHP
- 檔案上傳漏洞
- .NET Core 如何上傳檔案及處理大檔案上傳
- struts動態多檔案上傳實現
- SpringMVC多個檔案上傳實現SpringMVC