让你同时上传 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 相关文章推荐
一个odbc连mssql分页的类
Oct 09 PHP
php zend解密软件绿色版测试可用
Apr 14 PHP
THINKPHP+JS实现缩放图片式截图的实现
Mar 07 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
Jun 21 PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
Sep 04 PHP
二进制交叉权限微型php类分享
Feb 07 PHP
PHP+ajaxfileupload+jcrop插件完美实现头像上传剪裁
Jun 09 PHP
Codeigniter检测表单post数据的方法
Mar 21 PHP
PHP弹出对话框技巧详细解读
Sep 26 PHP
jQuery+PHP发布的内容进行无刷新分页(Fckeditor)
Oct 22 PHP
PHP 数组遍历foreach语法结构及实例
Jun 13 PHP
PHP获取远程http或ftp文件的md5值的方法
Apr 15 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
自己前几天写的无限分类类
2007/02/14 PHP
PHP如何编写易读的代码
2007/07/10 PHP
ecshop 批量上传(加入自定义属性)
2012/03/20 PHP
PHP递归算法的详细示例分析
2013/02/19 PHP
PHP实现批量修改文件后缀名的方法
2015/07/30 PHP
PHP用户注册邮件激活账户的实现代码
2017/05/31 PHP
实例讲解YII2中多表关联的使用方法
2017/07/21 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
JS+XML 省份和城市之间的联动实现代码
2009/10/14 Javascript
JavaScript实现继承的4种方法总结
2014/10/16 Javascript
jQuery插件制作之全局函数用法实例
2015/06/01 Javascript
JavaScript获得url查询参数的方法
2015/07/02 Javascript
js实现按钮控制带有停顿效果的图片滚动
2016/08/30 Javascript
详解jQuery简单的表格应用
2016/12/16 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
Vue2.0 http请求以及loading展示实例
2018/03/06 Javascript
微信小程序文章详情页面实现代码
2018/09/10 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
[00:18]天涯墨客三技能展示
2018/08/25 DOTA
Python基于回溯法子集树模板实现8皇后问题
2017/09/01 Python
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
使用python绘制温度变化雷达图
2019/10/18 Python
python实现图片插入文字
2019/11/26 Python
Python实现井字棋小游戏
2020/03/09 Python
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
2018/01/03 HTML / CSS
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
小学生防溺水广播稿
2014/01/12 职场文书
职业生涯规划设计步骤
2014/01/12 职场文书
2015驻村干部工作总结
2015/04/07 职场文书
2015年护士长个人工作总结
2015/04/24 职场文书
放牛班的春天观后感
2015/06/01 职场文书
小学二年级语文教学反思
2016/03/03 职场文书
Python 如何解决稀疏矩阵运算
2021/05/26 Python