让你同时上传 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实现快速排序法函数代码
Aug 27 PHP
php+ajax实时刷新简单实例
Feb 25 PHP
php实现的xml操作类
Jan 15 PHP
PHP设计模式之简单投诉页面实例
Feb 24 PHP
PHP编写学校网站上新生注册登陆程序的实例分享
Mar 21 PHP
PHP实现移除数组中为空或为某值元素的方法
Jan 07 PHP
PHP实现的简单异常处理类示例
May 04 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 PHP
解决laravel 出现ajax请求419(unknown status)的问题
Sep 03 PHP
php设计模式之适配器模式原理、用法及注意事项详解
Sep 24 PHP
laravel-admin 实现在指定的相册下添加照片
Oct 21 PHP
Yii 框架使用Forms操作详解
May 18 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
菜鸟修复电子管记
2021/03/02 无线电
一道求$b相对于$a的相对路径的php代码
2010/08/08 PHP
thinkphp控制器调度使用示例
2014/02/24 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
2014/04/08 PHP
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
joomla组件开发入门教程
2016/05/04 PHP
php cookie 详解使用实例
2016/11/03 PHP
php/JS实现的生成随机密码(验证码)功能示例
2019/06/06 PHP
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
基于jQuery实现的百度导航li拖放排列效果,即时更新数据库
2012/07/31 Javascript
基于JavaScript自定义构造函数的详解说明
2013/04/24 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
jQuery视差滚动效果网页实现方法经验总结
2016/09/29 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
详解vue之页面缓存问题(基于2.0)
2017/01/10 Javascript
Node.JS利用PhantomJs抓取网页入门教程
2017/05/19 Javascript
微信小程序图片横向左右滑动案例
2017/05/19 Javascript
手把手教你把nodejs部署到linux上跑出hello world
2017/06/19 NodeJs
详解从零搭建 vue2 vue-router2 webpack3 工程
2017/11/22 Javascript
序列化模块json代码实例详解
2020/03/03 Javascript
JavaScript实现动态留言板
2020/03/16 Javascript
[00:32]2018DOTA2亚洲邀请赛iG出场
2018/04/03 DOTA
在Linux系统上通过uWSGI配置Nginx+Python环境的教程
2015/12/25 Python
python OpenCV学习笔记直方图反向投影的实现
2018/02/07 Python
Python random模块制作简易的四位数验证码
2020/02/01 Python
Python PIL库图片灰化处理
2020/04/07 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
拉斯维加斯城市观光通行证:Las Vegas Pass
2019/05/21 全球购物
大学生活学习的自我评价
2013/12/03 职场文书
国际商务英语专业求职信
2014/07/08 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
医药公司开票员岗位职责
2015/04/15 职场文书
导游词之无锡唐城
2019/12/12 职场文书
使用Springboot实现健身房管理系统
2021/07/01 Java/Android
Python OpenCV实现图像模板匹配详解
2022/04/07 Python
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python