让你同时上传 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 获取完整url地址
Dec 20 PHP
让PHP开发者事半功倍的十大技巧小结
Apr 20 PHP
分享一个超好用的php header下载函数
Jan 31 PHP
php读取文件内容的三种可行方法示例介绍
Feb 08 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
Nov 18 PHP
Laravel 5框架学习之向视图传送数据(进阶篇)
Apr 08 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
Apr 01 PHP
php微信开发之图片回复功能
Jun 14 PHP
PHP微商城开源代码实例
Mar 27 PHP
Laravel使用swoole实现websocket主动消息推送的方法介绍
Oct 20 PHP
PHP如何使用array_unshift()在数组开头插入元素
Sep 01 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 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
php mysql 判断update之后是否更新了的方法
2012/01/10 PHP
PHP编码转换函数 自动转换字符集支持数组转换
2012/12/16 PHP
spl_autoload_register与autoload的区别详解
2013/06/03 PHP
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
php实现数组中索引关联数据转换成json对象的方法
2015/07/08 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
PHP通过curl获取接口URL的数据方法
2018/05/31 PHP
js 方法实现返回多个数据的代码
2009/04/30 Javascript
Dom在ajax技术中的作用说明
2010/10/25 Javascript
面向对象的Javascript之三(封装和信息隐藏)
2012/01/27 Javascript
ie支持function.bind()方法实现代码
2012/12/27 Javascript
Egret引擎开发指南之发布项目
2014/09/03 Javascript
jQuery实现的向下图文信息滚动效果
2015/05/03 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
JS实现的适合做faq或menu滑动效果示例
2016/11/17 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
小程序如何写动态标签的实现方法
2020/02/05 Javascript
用jQuery实现抽奖程序
2020/04/12 jQuery
pycharm设置python文件模板信息过程图解
2020/03/10 Python
python实现自动清理重复文件
2020/08/24 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
数控技校生自我鉴定
2014/03/02 职场文书
投标担保书范文
2014/04/02 职场文书
抗洪抢险事迹材料
2014/05/06 职场文书
学习张林森心得体会
2014/09/10 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
幼儿园教师工作总结2015
2015/04/02 职场文书
婚宴新娘致辞
2015/07/28 职场文书
新教师教学工作总结
2015/08/14 职场文书
岗位聘任协议书
2015/09/21 职场文书
求职信如何撰写?
2019/05/22 职场文书
高中16字霸气押韵班级口号集锦!
2019/06/27 职场文书
Redis可视化客户端小结
2021/06/10 Redis