让你同时上传 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
桌面中心(一)创建数据库
Oct 09 PHP
php 静态化实现代码
Mar 20 PHP
PHP图片处理类 phpThumb参数用法介绍
Mar 11 PHP
深入理解PHP中的Session和Cookie
Jun 21 PHP
twig里使用js变量的方法
Feb 05 PHP
php支持断点续传、分块下载的类
May 02 PHP
Thinkphp批量更新数据的方法汇总
Jun 29 PHP
thinkPHP5.0框架独立配置与动态配置方法
Mar 17 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
Aug 09 PHP
php 判断IP为有效IP地址的方法
Jan 28 PHP
Laravel 6.2 中添加了可调用容器对象的方法
Oct 22 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 中dirname(_file_)讲解
2007/03/18 PHP
php cookie的操作实现代码(登录)
2010/12/29 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
php生成gif动画的方法
2015/11/05 PHP
PHP在linux上执行外部命令的方法
2017/02/06 PHP
php读取本地json文件的实例
2018/03/07 PHP
B/S开发中常用javaScript技术与代码
2007/03/09 Javascript
jquery 选择器部分整理
2009/10/28 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
js密码强度实时检测代码
2016/03/02 Javascript
ionic 上拉菜单(ActionSheet)实例代码
2016/06/06 Javascript
js判断是否是手机页面
2017/03/17 Javascript
JS实现左边列表移到到右边列表功能
2018/03/28 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
vue 取出v-for循环中的index值实例
2019/11/09 Javascript
微信小程序实现菜单左右联动
2020/05/19 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
vant 中van-list的用法说明
2020/11/11 Javascript
python简单实现旋转图片的方法
2015/05/30 Python
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
python使用正则表达式来获取文件名的前缀方法
2018/10/21 Python
分享Python切分字符串的一个不错方法
2018/12/14 Python
详解python做UI界面的方法
2019/02/27 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
2020/01/08 Python
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
John Hardy官方网站:手工设计首饰的奢侈品牌
2017/07/05 全球购物
楼面经理岗位职责范本
2014/02/18 职场文书
库房管理员岗位职责
2014/03/09 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
2015年公司中秋节致辞
2015/07/31 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
送给客户微信问候语!
2019/07/04 职场文书
python使用tkinter实现透明窗体上绘制随机出现的小球(实例代码)
2021/05/17 Python
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
2021/05/30 Javascript