让你同时上传 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 相关文章推荐
PHP删除目录及目录下所有文件的方法详解
Jun 06 PHP
php缩放图片(根据宽高的等比例缩放)实例介绍
Jun 09 PHP
PHP中echo,print_r与var_dump区别分析
Sep 29 PHP
php输出金字塔的2种实现方法
Dec 16 PHP
PHP统计当前在线用户数实例讲解
Oct 21 PHP
PHP上传图片类显示缩略图功能
Jun 30 PHP
PHP实现的网站目录扫描索引工具
Sep 08 PHP
Mac版PhpStorm之XAMPP整合apache服务器配置的图文教程详解
Oct 13 PHP
PHP实现redis限制单ip、单用户的访问次数功能示例
Jun 16 PHP
PHP设计模式之单例模式定义与用法分析
Mar 26 PHP
PHP示例演示发送邮件给某个邮箱
Apr 03 PHP
php ActiveMQ的安装与使用方法图文教程
Feb 23 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下使用SimpleXML 处理XML 文件
2010/02/27 PHP
PHP安全性漫谈
2012/06/28 PHP
PHP文件操作之获取目录下文件与计算相对路径的方法
2016/01/08 PHP
PHP CURL采集百度搜寻结果图片不显示问题的解决方法
2017/02/03 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
laravel框架中路由设置,路由参数和路由命名实例分析
2019/11/23 PHP
PHP 构造函数和析构函数原理与用法分析
2020/04/21 PHP
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
javascript编程异常处理实例小结
2015/11/30 Javascript
实例讲解js验证表单项是否为空的方法
2016/01/09 Javascript
jQuery+PHP实现微信转盘抽奖功能的方法
2016/05/25 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
JS基于正则实现数字千分位用逗号分隔的方法
2017/06/16 Javascript
JavaScript简介_动力节点Java学院整理
2017/06/26 Javascript
前端axios下载excel文件(二进制)的处理方法
2018/07/31 Javascript
Vue+Webpack完美整合富文本编辑器TinyMce的方法
2018/11/30 Javascript
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
[35:34]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Python中的闭包详细介绍和实例
2014/11/21 Python
python通过ftplib登录到ftp服务器的方法
2015/05/08 Python
如何在python中使用selenium的示例
2017/12/26 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
Python类和对象的定义与实际应用案例分析
2018/12/27 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
下面这个程序执行后会有什么错误或者效果
2014/11/03 面试题
留学自荐信
2013/10/10 职场文书
白酒业务员岗位职责
2013/12/27 职场文书
竞选班干部的演讲稿
2014/04/24 职场文书
计算机专业毕业生求职信
2014/04/30 职场文书
邮政竞聘演讲稿
2014/09/03 职场文书
股份合作协议书
2014/09/10 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
社区好人好事材料
2014/12/26 职场文书
佛光寺导游词
2015/02/10 职场文书
店长岗位职责
2015/02/11 职场文书
幼儿园亲子活动感想
2015/08/07 职场文书