请教宇凡---关于图片上传 我的email是:[email protected]谢谢! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 mail给你了一些代码,不是我写的,但是还算比较完善。 让你同时上传1000个文件[一]作者:gearsoft 预备知识:Javascript, PHP(少量)/Perl(少量)! 测试环境:Windows2000 + IIS5 + PHP (Win98 + PWS + PHP3 失败,估计是配置出了问题) 目录结构: /wwwroot/cgi-bin/fileup.php (文件接收) /wwwroot/www/test/phpfileup.htm (文件提交) /wwwroot/www/test/tmp/ (默认保存目录) 前言:文件上传,简单又麻烦。下面是上传文件的提交页面,利用该页面你不仅可以生成 1000 个上传文件框(实际是任意多个 0~n ),而且可分别指出它们的保存路径。 提交页面的文件输入框为命名为: file0,file1,...file100,...fileN 提交页面的文件路径框为命名为: path0,path1,...path100,...pathN 由于页面的生成非常简单,所以就不在此多解释了,用 javascript 定义了两个函数,check() 用于提交页面,create()用于生成文件上传框。如果你有什么更好的建议或有什么疑问请 Email: [email protected] phpfileup.htm -------------------------------------------------------- <html> <head> <title></title> <style> .lbtn {font-family:verdana;font-size:10.5pt;} .ist {font-family:verdana;font-size:14.8px;size:400} </style> <script LANGUAGE="javascript"> function check(){ document.frm1.submit(); document.body.innerHTML="Uploading Please wait!"; } var i=0; function create(){ var sfrm = document.frm1.innerHTML; var icnt = cnt.value; for(j=0;j<icnt;j++) { sfrm = sfrm + "请选择文件 "+i+" <input type=file name='file"+i+"' class=ist>"; sfrm = sfrm + " 路径:<input type=text name='path"+i+"' value='../www/test/tmp/' class=ist>"; sfrm = sfrm + ""; i++; } document.frm1.innerHTML = sfrm; document.frm1.cnt.value=i; } </script> </head> <body class=lbtn onload="document.frm1.cnt.value=cnt.value;"> 请输入要上传文件的数量: <input type=text name=cnt value="10" class=ist onchange="document.frm1.cnt.value=this.value;"> <input type=button name=bt1 value="生成上传文件框" onclick="create();" class=lbtn> <input type=button name=bt1 value="上传" onclick="check();" class=lbtn> <input type=button name=bt1 value="清除" onclick="document.location.reload();" class=lbtn> <form name=frm1 method="post" Enctype="multipart/form-data" action="../../cgi-bin/fileup.php"> <input type=hidden name=cnt value="20" class=ist> </form> <input type=button name=bt1 value="上传" onclick="check();" class=lbtn> <input type=button name=bt1 value="清除" onclick="document.location.reload();" class=lbtn> </body> </html> 中华技术网整理发布 http://www.asfocus.com让你同时上传1000个文件[二]作者:gearsoft 文件提交页面既已生成,下面任务就很明确了:将提交的文件内容保存到服务器上。 下面我们用两种方法来实现这个功能: 1. 用 PHP 来保存: 我们先定义一个文件保存函数 fup() 它有两个参数: $filename: 文件内容 $fname: 文件名(包含路径) 剩下的就是写一个循环将文件依次写入服务器。这里要简单说明一下: PHP 对于上传文件的处理是这样的:如果提交的文件框我为 file0, 那么提交给 PHP 的文件内容保存在变量 $file0 中,而文件名则保存在 $file0_name 中。这样在这个循环中我要做的就是将提交页面提交的内容分解出来,实现过程请看下面的代码。 fileup.php ---------------------------------------------------------------------- <? function fup($filename,$fname) { If($filename != "none") { copy($filename,$fname); unlink($filename); } } for($i=0;$i<$cnt;$i++) { $ffnn="file".$i; $ffnnname=$ffnn."_name"; $ffpath="path".$i; //print $$ffnn; print $$ffnnname; print ""; fup($$ffnn,$$ffpath.$$ffnnname); //"../www/test/tmp/" } ?> ---------------------------------------------------------------------- 2. 用 PERL 来保存: 它们实现的原理完全一样,在此不多说,请看代码: fileup.cgi(fileup.pl) ---------------------------------------------------------------------- #!/usr/bin/perl use CGI qw/:standard/; if ($ENV{'CONTENT_TYPE'} !~ /multipart/form-data/) { print "Cache-Control: no-cachenPragma: no-cachen" . "Content-Type: text/htmlnn" . "<html><body>Your web browser cannot upload files. Sorry.</body></html>"; exit 0; } $cntfile=param('cnt'); print header; print start_html; #print "Receiving Please wait...."; &g_head; #$writed = '../www/test/tmp/'; for ($i=0;$i<$cntfile;$i++){ $paramfile = 'file'.$i; $parampath='path'.$i; $writed=param($parampath); &upfile; &g_body; } &g_bott; #<<<<<<<<<<<<<<<<<<<<<以下为自定义过程<<<<<<<<<<<<<<<<<<<<<<<<< sub upfile { $maxdata = 512000; # $writed = '../www/test/tmp/'; $strRFname=reverse $xfile; $intIndex=index($strRFname,'\'); $strNetFname=substr($strRFname,0,$intIndex); $strNetFname=scalar reverse $strNetFname; if((stat $xfile)[7]>$maxdata){ print "Status: 411 Size Not Allowedn" . "Content-Type: text/htmlnAllow: POSTnn" . "<html><head><title>411 411 Size Not Allowed</title></head><body><h1> You got big problem. Try again.</h1></body></html>n"; exit 0; } binmode $xfile; use File::Copy; copy($xfile,$writed.$strNetFname); } sub g_head{ print '<table border=1 align=center>'; print '<tr><td colspan=3 align=center>文件上传结果(Upload Result)</td></tr>'; print '<tr align=center>'; print ' <td>SourceFile:</td>'; print ' <td>DestFile:</td>'; print ' <td>Upload</td>'; print '</tr>'; } sub g_body{ print '<tr>'; print ' <td>'.$xfile .'</td>'; print ' <td>'.$writed.$strNetFname.'</td>'; print ' <td>OK!</td>'; print '</tr>'; } sub g_bott{ print '</table>'; } ---------------------------------------------------------------------- 如有好的建议请 Email: [email protected] 中华技术网整理发布 http://www.asfocus.com 帮忙看看一个php文件中的这段代码是什么意思? 请问如何在一个text中触发一个单击事件? xajax晕晕晕,新手搞不定啊 怎样修改目录名称? 一个sql相同数据合并问题 php程序是以什么身份读写文件的? 是其他用户吗? 如何取得两个日期间的天数差,并取得每一天的日期 请看一下这个登陆框怎样制作和使用? 值的传递(急!在线等) 为什么当文件下载时保存文件名不能缺省为原来的文件名 谁知道最新的E-mail的匹配代码?@符号前面可以有点。最后可以有四位 帮找找语句毛病?
作者:gearsoft 预备知识:Javascript, PHP(少量)/Perl(少量)!
测试环境:Windows2000 + IIS5 + PHP (Win98 + PWS + PHP3 失败,估计是配置出了问题)
目录结构:
/wwwroot/cgi-bin/fileup.php (文件接收)
/wwwroot/www/test/phpfileup.htm (文件提交)
/wwwroot/www/test/tmp/ (默认保存目录) 前言:文件上传,简单又麻烦。下面是上传文件的提交页面,利用该页面你不仅可以生成 1000 个上传文件框(实际是任意多个 0~n ),而且可分别指出它们的保存路径。
提交页面的文件输入框为命名为: file0,file1,...file100,...fileN
提交页面的文件路径框为命名为: path0,path1,...path100,...pathN
由于页面的生成非常简单,所以就不在此多解释了,用 javascript 定义了两个函数,check() 用于提交页面,create()用于生成文件上传框。如果你有什么更好的建议或有什么疑问请 Email: [email protected] phpfileup.htm
--------------------------------------------------------
<html>
<head>
<title></title>
<style>
.lbtn {font-family:verdana;font-size:10.5pt;}
.ist {font-family:verdana;font-size:14.8px;size:400}
</style> <script LANGUAGE="javascript">
function check(){
document.frm1.submit();
document.body.innerHTML="Uploading Please wait!";
} var i=0;
function create(){
var sfrm = document.frm1.innerHTML;
var icnt = cnt.value;
for(j=0;j<icnt;j++)
{
sfrm = sfrm + "请选择文件 "+i+" <input type=file name='file"+i+"' class=ist>";
sfrm = sfrm + " 路径:<input type=text name='path"+i+"' value='../www/test/tmp/' class=ist>";
sfrm = sfrm + "
";
i++;
}
document.frm1.innerHTML = sfrm;
document.frm1.cnt.value=i;
} </script> </head>
<body class=lbtn onload="document.frm1.cnt.value=cnt.value;">
请输入要上传文件的数量: <input type=text name=cnt value="10" class=ist onchange="document.frm1.cnt.value=this.value;">
<input type=button name=bt1 value="生成上传文件框" onclick="create();" class=lbtn>
<input type=button name=bt1 value="上传" onclick="check();" class=lbtn>
<input type=button name=bt1 value="清除" onclick="document.location.reload();" class=lbtn> <form name=frm1 method="post" Enctype="multipart/form-data" action="../../cgi-bin/fileup.php">
<input type=hidden name=cnt value="20" class=ist>
</form> <input type=button name=bt1 value="上传" onclick="check();" class=lbtn>
<input type=button name=bt1 value="清除" onclick="document.location.reload();" class=lbtn>
</body>
</html>
中华技术网整理发布 http://www.asfocus.com让你同时上传1000个文件[二]
作者:gearsoft 文件提交页面既已生成,下面任务就很明确了:将提交的文件内容保存到服务器上。 下面我们用两种方法来实现这个功能: 1. 用 PHP 来保存:
我们先定义一个文件保存函数 fup() 它有两个参数:
$filename: 文件内容
$fname: 文件名(包含路径)
剩下的就是写一个循环将文件依次写入服务器。这里要简单说明一下:
PHP 对于上传文件的处理是这样的:如果提交的文件框我为 file0, 那么提交给 PHP 的文件内容保存在变量 $file0 中,而文件名则保存在 $file0_name 中。这样在这个循环中我要做的就是将提交页面提交的内容分解出来,实现过程请看下面的代码。 fileup.php
----------------------------------------------------------------------
<?
function fup($filename,$fname)
{ If($filename != "none") {
copy($filename,$fname);
unlink($filename);
}
} for($i=0;$i<$cnt;$i++)
{
$ffnn="file".$i;
$ffnnname=$ffnn."_name";
$ffpath="path".$i; //print $$ffnn;
print $$ffnnname;
print "
"; fup($$ffnn,$$ffpath.$$ffnnname); //"../www/test/tmp/"
}
?>
---------------------------------------------------------------------- 2. 用 PERL 来保存:
它们实现的原理完全一样,在此不多说,请看代码: fileup.cgi(fileup.pl)
----------------------------------------------------------------------
#!/usr/bin/perl use CGI qw/:standard/; if ($ENV{'CONTENT_TYPE'} !~ /multipart/form-data/) {
print "Cache-Control: no-cachenPragma: no-cachen" .
"Content-Type: text/htmlnn" .
"<html><body>Your web browser cannot upload files. Sorry.</body></html>";
exit 0;
}
$cntfile=param('cnt');
print header;
print start_html;
#print "Receiving Please wait...."; &g_head; #$writed = '../www/test/tmp/'; for ($i=0;$i<$cntfile;$i++){
$paramfile = 'file'.$i;
$parampath='path'.$i; $writed=param($parampath); &upfile;
&g_body;
} &g_bott; #<<<<<<<<<<<<<<<<<<<<<以下为自定义过程<<<<<<<<<<<<<<<<<<<<<<<<< sub upfile
{
$maxdata = 512000;
# $writed = '../www/test/tmp/';
$strRFname=reverse $xfile;
$intIndex=index($strRFname,'\');
$strNetFname=substr($strRFname,0,$intIndex);
$strNetFname=scalar reverse $strNetFname;
if((stat $xfile)[7]>$maxdata){
print "Status: 411 Size Not Allowedn" .
"Content-Type: text/htmlnAllow: POSTnn" .
"<html><head><title>411 411 Size Not Allowed</title></head><body><h1> You got big problem. Try again.</h1></body></html>n";
exit 0;
}
binmode $xfile;
use File::Copy;
copy($xfile,$writed.$strNetFname);
} sub g_head{
print '<table border=1 align=center>';
print '<tr><td colspan=3 align=center>文件上传结果(Upload Result)</td></tr>';
print '<tr align=center>';
print ' <td>SourceFile:</td>';
print ' <td>DestFile:</td>';
print ' <td>Upload</td>';
print '</tr>';
} sub g_body{
print '<tr>';
print ' <td>'.$xfile .'</td>';
print ' <td>'.$writed.$strNetFname.'</td>';
print ' <td>OK!</td>';
print '</tr>';
} sub g_bott{
print '</table>';
}
----------------------------------------------------------------------
如有好的建议请 Email: [email protected]
中华技术网整理发布 http://www.asfocus.com