让你同时上传 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安装攻略:常见问题解答(一)
Oct 09 PHP
php定时计划任务的实现方法详解
Jun 06 PHP
PHP图片上传代码
Nov 04 PHP
PHP批量删除、清除UTF-8文件BOM头的代码实例
Apr 14 PHP
PHP安全的URL字符串base64编码和解码
Jun 19 PHP
php版本的cron定时任务执行器使用实例
Aug 19 PHP
PHP易混淆函数的区别及用法汇总
Nov 22 PHP
PHP生成随机数的方法实例分析
Jan 22 PHP
为百度UE编辑器上传图片添加水印功能
Apr 16 PHP
php算法实例分享
Jul 14 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
May 29 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
Feb 20 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/07/04 PHP
yii实现级联下拉菜单的方法
2014/07/31 PHP
php字符串分割函数用法实例
2015/03/17 PHP
js实现同一个页面多个渐变效果的方法
2015/04/10 Javascript
jQuery实现的经典滑动门效果
2015/09/22 Javascript
vue webuploader 文件上传组件开发
2017/09/23 Javascript
javascript高级模块化require.js的具体使用方法
2017/10/31 Javascript
浅谈Node.js 中间件模式
2018/06/12 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
发布订阅模式在vue中的实际运用实例详解
2019/06/09 Javascript
Angular6项目打包优化的实现方法
2019/12/15 Javascript
jQuery实现中奖播报功能(让文本滚动起来) 简单设置数值即可
2020/03/20 jQuery
浅谈vue中$bus的使用和涉及到的问题
2020/07/28 Javascript
用Python写冒泡排序代码
2016/04/12 Python
Python ldap实现登录实例代码
2016/09/30 Python
Python排序算法实例代码
2017/08/10 Python
python学习必备知识汇总
2017/09/08 Python
对命令行模式与python交互模式介绍
2018/05/12 Python
Python3.7实现中控考勤机自动连接
2018/08/28 Python
Python查找文件中包含中文的行方法
2018/12/19 Python
解决python给列表里添加字典时被最后一个覆盖的问题
2019/01/21 Python
Python神奇的内置函数locals的实例讲解
2019/02/22 Python
Python3简单实现串口通信的方法
2019/06/12 Python
Python实现快速大文件比较代码解析
2020/09/04 Python
Python的Tqdm模块实现进度条配置
2021/02/24 Python
日本著名的平价时尚女性购物网站:Fifth
2016/08/24 全球购物
ellesse美国官方商店:意大利高级运动服品牌
2019/10/29 全球购物
技校毕业生自荐书
2014/05/23 职场文书
工地例会施工汇报材料
2014/08/22 职场文书
2014乡镇党政班子四风问题思想汇报
2014/09/14 职场文书
优秀教师推荐材料
2014/12/16 职场文书
2015年小学中秋节活动总结
2015/03/23 职场文书
酒店人事专员岗位职责
2015/04/07 职场文书
毕业论文致谢范文
2015/05/14 职场文书
祝福语集锦:朋友新店开业祝福语
2019/12/10 职场文书
vue打包时去掉所有的console.log
2022/04/10 Vue.js