让你同时上传 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加MYSQL服务器
Oct 09 PHP
一个连接两个不同MYSQL数据库的PHP程序
Oct 09 PHP
PHP测试程序运行时间的类
Feb 05 PHP
PHP仿博客园 个人博客(1) 数据库与界面设计
Jul 05 PHP
PHP之APC缓存详细介绍 apc模块安装
Jan 13 PHP
ThinkPHP入库出现两次反斜线转义及数据库类转义的解决方法
Nov 04 PHP
Yii的CDbCriteria查询条件用法实例
Dec 04 PHP
php设计模式之单例模式实例分析
Feb 25 PHP
PHP浮点数精度问题汇总
May 13 PHP
thinkPHP连接sqlite3数据库的实现方法(附Thinkphp代码生成器下载)
May 27 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
Oct 18 PHP
Laravel 集成微信用户登录和绑定的实现
Dec 27 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中转义mysql语句的实现代码
2011/06/24 PHP
php显示页码分页类的封装
2017/06/08 PHP
利用laravel搭建一个迷你博客实战教程
2017/08/13 PHP
JS 日期比较大小的简单实例
2014/01/13 Javascript
javascript实现Table间隔色以及选择高亮(和动态切换数据)的方法
2015/05/14 Javascript
再谈JavaScript线程
2015/07/10 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
JS中dom0级事件和dom2级事件的区别介绍
2016/05/05 Javascript
AngularJS基础 ng-model-options 指令简单示例
2016/08/02 Javascript
AngularGauge 属性解析详解
2016/09/06 Javascript
详解为Angular.js内置$http服务添加拦截器的方法
2016/12/20 Javascript
利用node.js写一个爬取知乎妹纸图的小爬虫
2017/05/03 Javascript
vue中阻止click事件冒泡,防止触发另一个事件的方法
2018/02/08 Javascript
JavaScript折半查找(二分查找)算法原理与实现方法示例
2018/08/06 Javascript
详解js加减乘除精确计算
2019/03/19 Javascript
基于ssm框架实现layui分页效果
2019/07/27 Javascript
[11:42]2018DOTA2国际邀请赛寻真——OG卷土重来
2018/08/17 DOTA
Python面向对象编程中的类和对象学习教程
2015/03/30 Python
Python使用正则表达式抓取网页图片的方法示例
2017/04/21 Python
python使用folium库绘制地图点击框
2018/09/21 Python
在python中使用with打开多个文件的方法
2019/01/07 Python
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
tensorflow 获取checkpoint中的变量列表实例
2020/02/11 Python
Python图像处理库PIL的ImageEnhance模块使用介绍
2020/02/26 Python
Python多进程编程常用方法解析
2020/03/26 Python
手摸手教你用canvas实现给图片添加平铺水印的实现
2019/08/20 HTML / CSS
香港化妆品经销商:我的公主
2016/08/05 全球购物
Myprotein葡萄牙官方网站:英国优质运动营养品牌
2016/09/12 全球购物
如何查询Oracle数据库中已经创建的索引
2013/10/11 面试题
远程教育心得体会
2014/01/03 职场文书
化学教学随笔感言
2014/02/19 职场文书
售后服务承诺书模板
2014/05/21 职场文书
采购部长岗位职责
2014/06/13 职场文书
2015年大班保育员工作总结
2015/05/18 职场文书
芙蓉镇观后感
2015/06/10 职场文书
厉行节约工作总结
2015/08/12 职场文书