让你同时上传 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 相关文章推荐
如何删除多级目录
Oct 09 PHP
php Try Catch异常测试
Mar 01 PHP
PHP计划任务之关闭浏览器后仍然继续执行的函数
Jul 22 PHP
php正则表达式使用的详细介绍
Apr 27 PHP
将CMYK颜色值和RGB颜色相互转换的PHP代码
Jul 28 PHP
QQ互联一键登录审核不通过的解决方案
Sep 10 PHP
dedecms中使用php语句指南
Nov 13 PHP
Windows下Apache + PHP SESSION丢失的解决过程全纪录
Apr 07 PHP
PHP rsa加密解密使用方法
Apr 27 PHP
php实现将数据做成json的格式给前端使用
Aug 21 PHP
TP5(thinkPHP5框架)基于bootstrap实现的单图上传插件用法示例
May 29 PHP
Yii实现微信公众号场景二维码的方法实例
Aug 30 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和ACCESS写聊天室(八)
2006/10/09 PHP
由php的call_user_func传reference引发的思考
2010/07/23 PHP
PHP实现上传文件并存进数据库的方法
2015/07/16 PHP
利用php_imagick实现复古效果的方法
2016/10/18 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
基于jquery的从一个页面跳转到另一个页面的指定位置的实现代码(带平滑移动的效果)
2011/05/24 Javascript
JavaScript初学者应注意的七个细节详细介绍
2012/12/27 Javascript
jquery放大镜效果超漂亮噢
2013/11/15 Javascript
js获取网页可见区域、正文以及屏幕分辨率的高度
2014/05/15 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
javascript字符串函数汇总
2015/12/06 Javascript
JavaScript中iframe实现局部刷新的几种方法汇总
2016/01/06 Javascript
JavaScript微信定位功能实现方法
2016/11/29 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
纯原生js实现贪吃蛇游戏
2020/04/16 Javascript
10个最受欢迎的 JavaScript框架(推荐)
2019/04/24 Javascript
[42:20]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python进阶教程之词典、字典、dict
2014/08/29 Python
Django中几种重定向方法
2015/04/28 Python
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
python使用正则筛选信用卡
2019/01/27 Python
python+numpy按行求一个二维数组的最大值方法
2019/07/09 Python
python3反转字符串的3种方法(小结)
2019/11/07 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
2020/01/02 Python
Python常用外部指令执行代码实例
2020/11/05 Python
HTML5的download属性详细介绍和使用实例
2014/04/23 HTML / CSS
HTML5新特性之用SVG绘制微信logo
2016/02/03 HTML / CSS
英国最大的宠物食品和宠物用品网上零售商: Zooplus
2016/08/01 全球购物
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
初中政治教学反思
2014/01/17 职场文书
国庆促销活动总结
2014/08/29 职场文书
关于有小孩的离婚协议书
2014/10/26 职场文书
2014年加油站工作总结
2014/12/04 职场文书
幼儿园国培研修日志
2015/11/13 职场文书