让你同时上传 1000 个文件 (二)


文件提交页面既已生成,下面任务就很明确了:将提交的文件内容保存到服务器上。

下面我们用两种方法来实现这个功能:

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与奥索网共同拥有,如需转载,请注明作者及出处】



相关阅读:
CSS教程:简单理解em
网络通讯--shapecfg(shaper configuration)
最流行的AJAX框架
JavaScript 序列化对象实现代码
浅谈Windows 7的优缺点
我认为JSP有问题(下)
修改、删除数据记录(DELETE\UPDATE)
开发人员必知的28个HTML5新特性及技巧
PHP 程序员应该使用的10个组件
身份验证方面的函数
JavaScript类和继承 this属性使用说明
JavaScript arguments 多参传值函数
重定向实现代码
兼容firefox的给每一个onClick再附加一个事件
快速导航
PHP MySQL HTML CSS JavaScript MSSQL AJAX .NET JSP Linux Mac ASP 服务器 SQL jQuery C# C++ java Android IOS oracle MongoDB SQLite wamp 交通频道 作文范文 水晶羽翼作文1000字 一个讨厌的人600字 植树节手抄报资料内容 锅巴三杰 美丽的壶瓶山 老爸的茶壶 小班社会活动教案:小花被 真诚就不怕虚伪 小学四年级作文350字:你的努力,我懂。 开学典礼教师代表发言稿 植树节起源 小学六年级作文600字:耳朵就诊记 读《鲁滨逊漂游记》有感400字 裂变 小学五年级作文450字:两个快乐的理由 [图文]美丽 2013党支部工作计划 如果有一棵大树 眼睛看不见自己的睫毛 佛教的经典语句 可爱的松鼠300字 从台言引发的一点随想 走过你的坟前 激烈的抱球接力赛作文600字 六年级好大一棵树主题班会 成功演讲的突破口 人去楼空的时候,一种无以表达的绝望 高中高二作文1000字:千古奇才诸葛亮———读三国演义有感 代理签订合同的风险防范 与梦同眠作文400字 撒旦哭墙 老师,我想您作文750字 冬至经典祝福短信 xxx区“效能建设年”活动实施方案 【精品】领班工作总结 把握好拥有的青春、品德和智慧 高中高三作文1200字:家有小妹二三事 记忆的尘埃 其实我爱极了你 优秀一年级诗歌精选:小鸟 清明的心 小杯子大道理 同窗 和李相公摄事南郊,览物兴怀,呈一二知旧 善始者实繁 克终者盖寡 庆国庆厦门中国象棋少儿大赛 竹娃和石头城作文1200字 班队课作文300字 5月企业工人入党申请书模板 男孩的故事作文3000字

Copyright © 2016 phpStudy |