让你同时上传 1000 个文件 (二)


Posted in PHP onOctober 09, 2006

文件提交页面既已生成,下面任务就很明确了:将提交的文件内容保存到服务器上。

下面我们用两种方法来实现这个功能:

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 "<br>";

        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: gearsoft@netease.com  

【本文版权归作者gearsoft与奥索网共同拥有,如需转载,请注明作者及出处】     

PHP 相关文章推荐
Apache+php+mysql在windows下的安装与配置图解(最新版)
Nov 30 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
Nov 07 PHP
ThinkPHP之N方法实例详解
Jun 20 PHP
PHP获取当前完整URL地址的函数
Dec 21 PHP
php判断访问IP的方法
Jun 19 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
Mar 21 PHP
解读PHP中上传文件的处理问题
May 29 PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 PHP
JavaScript实现删除电脑的关机键
Jul 26 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
Apr 10 PHP
详解PHP素材图片上传、下载功能
Apr 12 PHP
如何利用PHP实现上传图片功能详解
Sep 24 PHP
一个可以删除字符串中HTML标记的PHP函数
Oct 09 #PHP
利用static实现表格的颜色隔行显示
Oct 09 #PHP
PHP 和 XML: 使用expat函数(三)
Oct 09 #PHP
PHP 和 XML: 使用expat函数(二)
Oct 09 #PHP
PHP 和 XML: 使用expat函数(一)
Oct 09 #PHP
用PHP动态生成虚拟现实VRML网页
Oct 09 #PHP
其他功能
Oct 09 #PHP
You might like
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
ext实现完整的登录代码
2008/08/08 Javascript
Javascript 继承机制的实现
2009/08/12 Javascript
JavaScript中发布/订阅模式的简单实例
2014/11/05 Javascript
javascript实现方法调用与方法触发小结
2016/03/26 Javascript
JS模拟简易滚动条效果代码(附demo源码)
2016/04/05 Javascript
jQuery属性选择器用法示例
2016/09/09 Javascript
jQuery插件zTree实现获取当前选中节点在同级节点中序号的方法
2017/03/08 Javascript
Angular.js去除页面中显示的空行方法示例
2017/03/30 Javascript
基于jquery实现多级菜单效果
2017/07/25 jQuery
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
js canvas实现橡皮擦效果
2018/12/20 Javascript
JS中封装axios来管控api的2种方式
2019/09/11 Javascript
js实现图片上传到服务器和回显
2020/01/19 Javascript
node.js使用http模块创建服务器和客户端完整示例
2020/02/10 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
vue项目或网页上实现文字转换成语音播放功能
2020/06/09 Javascript
[38:54]完美世界DOTA2联赛PWL S2 Rebirth vs LBZS 第一场 11.28
2020/12/01 DOTA
python实现的文件同步服务器实例
2015/06/02 Python
python 添加用户设置密码并发邮件给root用户
2016/07/25 Python
ansible作为python模块库使用的方法实例
2017/01/17 Python
python素数筛选法浅析
2018/03/19 Python
Django migrations 默认目录修改的方法教程
2018/09/28 Python
Django实现文件上传下载功能
2019/10/06 Python
python如何提升爬虫效率
2020/09/27 Python
德国化妆品和天然化妆品网上商店:kosmetikfuchs.de
2017/06/09 全球购物
美国男士内衣品牌:Tommy John
2017/12/22 全球购物
Java程序员面试90题
2013/10/19 面试题
期末总结的个人自我评价
2013/11/02 职场文书
机关门卫岗位职责
2013/12/30 职场文书
医药工作岗位求职信分享
2013/12/31 职场文书
大学毕业感言200字
2014/03/09 职场文书
事业单位竞聘上岗实施方案
2014/03/28 职场文书
平面设计专业求职信
2014/08/09 职场文书
十大最强岩石系宝可梦,怪颚龙实力最强,第七破坏力很强
2022/03/18 日漫