JAVASCRIPT动态添加表单,多个文件上传问题 你是想用php同时上传多个文件吗,写个循环就行了,我写过的,要是用到js那我就不怎么会了。你先把意图说清楚!!!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //上传附件 if($fjor == "yes") //选择了上传附件 { for($i=0;$i<$fjnum;$i++) { $fj_name ="list_fj".$i; $fj_relname = "fj_name".$i; $myfjname = $_POST[$fj_relname]; if($$fj_name!="") { include_once("../inc/class/upload.php"); $url="../UserFiles/".date('Ym')."/"; mkdir($url,0777); $f=new upfile($url,"doc,rar,zip,ppt,xls"); if(isset($_FILES[$fj_name])) { if($f->upload($fj_name)) { $myfj="UserFiles/".date('Ym')."/".$f->getname(); } } //插入附件表 $sqlf="insert into list_fj(userid,listid,fj_name,fj_url,begindate,modifydate) values(".$_SESSION['adminchecked'].",".$rsz[0]["id"].",'".$myfjname."','".$myfj."','".date('Y-m-d H:i:s')."','".date('Y-m-d H:i:s')."')"; //echo $sqlf;die(); $DB->Query($sqlf); } } } 给你个现成的,上传的表单name是guide[]是一个数组啊,别写错了 $f_type=strtolower("flv,swf,jpg,png");//设置可上传的文件类型 $file_size_max=500*1024*1024;//限制单个文件上传最大容量500M $overwrite = 0;//是否允许覆盖相同文件,1:允许,0:不允许 $f_input="guide";//设置上传域名称,数组的名称$m=0; foreach($_FILES[$f_input]["error"] as $key => $error){ $up_error="no"; if ($error == UPLOAD_ERR_OK){ if(!$ftype[$m]){ $up_error="yes"; } $f_name=$_FILES[$f_input]['name'][$key];//获取上传源文件名 $uploadfile=$uploaddir.strtolower(basename($f_name)); $tmp_type=substr(strrchr($f_name,"."),1);//获取文件扩展名 $tmp_type=strtolower($tmp_type); if(!stristr($f_type,$tmp_type)){ echo "对不起,不能上传".$tmp_type."格式文件, ".$f_name." 文件上传失败!<br />"; $up_error="yes"; } if ($_FILES[$f_input]['size'][$key]>$file_size_max) { echo "对不起,你上传的文件 ".$f_name." 容量为".round($_FILES[$f_input]['size'][$key]/1024)."Kb,大于规定的".($file_size_max/1024)."Kb,上传失败!<br />"; $up_error="yes"; } if (file_exists(".".$uploadfile)&&!$overwrite){ echo "对不起,文件 ".$f_name." 已经存在,上传失败!<br />"; $up_error="yes"; } $string = 'abcdefghijklmnopgrstuvwxyz0123456789';$rand = '';for ($x=0;$x<12;$x++) $rand .= substr($string,mt_rand(0,strlen($string)-1),1);$t=date("ymdHis").substr($gettime[0],2,6).$rand;$attdir=$flash_path.$sort."/"; if(!is_dir(".".$attdir)) { mkdir(".".$attdir);} $uploadfile=$attdir.$t.".".$tmp_type; if(($up_error!="yes") and (move_uploaded_file($_FILES[$f_input]['tmp_name'][$key],".".$uploadfile))){ $temp[$m]=$uploadfile;//上传文件地址 echo "文件 ".$f_name." 上传成功!<br />"; } } $m++; } 给你端js,如果去掉option这个功能就可以兼容火狐,ie,opera,safari,如果不去的只能兼容ie,safari,operavar i1 = 1; function addFile(dvID,inputNamePrefix) { var dv = document.getElementById(dvID); var file = document.createElement("label"); file.innerHTML = "第"+i1+"集 "; var file1 = document.createElement("select"); file1.name = "ftype[]"; file1.id=i1; file1.onchange = function() { var as =document.getElementById("file"+file1.id); var af=document.getElementById("guide"+file1.id);var a=document.getElementById(file1.id).value; if(a==1){as.style.display="none"; af.style.display="inline"; }else{as.style.display="inline"; af.style.display="none"; } } var file3 = document.createElement("option"); file3.value = "0"; file3.text="远程地址"; var file4 = document.createElement("option"); file4.value = "1"; file4.text="本地上传"; file1.add(file3); file1.add(file4); var file2 = document.createElement("input"); file2.type = "text"; file2.id ="file"+i1; file2.name = "guide1[]"; var file5 = document.createElement("input"); file5.type="file"; file5.name="guide[]"; file5.id="guide"+i1; file5.style.display="none"; dv.appendChild(file); dv.appendChild(file1); dv.appendChild(file2); dv.appendChild(file5); var btn = document.createElement("input"); btn.type = "button"; btn.id = btn.name = "btn" + i1; btn.value = "删除"; btn.onclick = function() { var b = document.getElementById(btn.id); dv.removeChild(b.nextSibling); //remove <BR > dv.removeChild(b.previousSibling); //file dv.removeChild(b.previousSibling); dv.removeChild(b.previousSibling); dv.removeChild(b.previousSibling); dv.removeChild(b); //btn } dv.appendChild(btn); dv.appendChild(document.createElement("BR")); i1++; } <span id='idfilespan'></span><br /> <a id=attach onclick="addFile('idfilespan','filename')" href="javascript:;">添加内容</a> 别的没细看,不过不久前才遇过firefox里同样的问题,你要把<form>和</form>移到<table>外面,不要放在<table>里,这样firefox里的问题就好了 var aElement=document.createElement("input"); aElement.name=nm; aElement.id=nm; aElement.type="file"; aElement.size="50"; aElement.value="30000";=====================================这个要改一下:try{var aElement=document.createElement("<input type='file' name='"+nm+"' id='"+nm+"'>");}catch(e){var aElement=document.createElement("input");aElement.name=nm;aElement.id=nm;aElement.type="file";}aElement.size="50"; aElement.value="30000"; Fatal error: Call to undefined function curl_init() in D:\wamp\www\bj\qq.php on Apache在运行时,访问一个PHP文件是以什么身份来访问的? 关于php中的strtok的用法 php代码求分析 关于自定义函数的小问题 请求一个函数,给分100,在线等 帮忙修改一下设计思路,分全送,不过不多,只有一百。 如何测浏览者的pc跟web服务器之间的网速? 怎样实现跨服务器的身分认证? wordpress二次开发中子目录问题 PHP连MYSQLI数据库问题 <textarea>换行的问题
//上传附件
if($fjor == "yes") //选择了上传附件
{
for($i=0;$i<$fjnum;$i++)
{
$fj_name ="list_fj".$i; $fj_relname = "fj_name".$i;
$myfjname = $_POST[$fj_relname];
if($$fj_name!="")
{
include_once("../inc/class/upload.php");
$url="../UserFiles/".date('Ym')."/";
mkdir($url,0777);
$f=new upfile($url,"doc,rar,zip,ppt,xls");
if(isset($_FILES[$fj_name]))
{
if($f->upload($fj_name))
{
$myfj="UserFiles/".date('Ym')."/".$f->getname();
} }
//插入附件表
$sqlf="insert into list_fj(userid,listid,fj_name,fj_url,begindate,modifydate) values(".$_SESSION['adminchecked'].",".$rsz[0]["id"].",'".$myfjname."','".$myfj."','".date('Y-m-d H:i:s')."','".date('Y-m-d H:i:s')."')";
//echo $sqlf;die();
$DB->Query($sqlf);
}
}
}
$file_size_max=500*1024*1024;//限制单个文件上传最大容量500M
$overwrite = 0;//是否允许覆盖相同文件,1:允许,0:不允许
$f_input="guide";//设置上传域名称,数组的名称
$m=0;
foreach($_FILES[$f_input]["error"] as $key => $error){
$up_error="no";
if ($error == UPLOAD_ERR_OK){
if(!$ftype[$m]){
$up_error="yes";
}
$f_name=$_FILES[$f_input]['name'][$key];//获取上传源文件名
$uploadfile=$uploaddir.strtolower(basename($f_name));
$tmp_type=substr(strrchr($f_name,"."),1);//获取文件扩展名
$tmp_type=strtolower($tmp_type);
if(!stristr($f_type,$tmp_type)){
echo "对不起,不能上传".$tmp_type."格式文件, ".$f_name." 文件上传失败!<br />";
$up_error="yes";
}
if ($_FILES[$f_input]['size'][$key]>$file_size_max) {
echo "对不起,你上传的文件 ".$f_name." 容量为".round($_FILES[$f_input]['size'][$key]/1024)."Kb,大于规定的".($file_size_max/1024)."Kb,上传失败!<br />";
$up_error="yes";
}
if (file_exists(".".$uploadfile)&&!$overwrite){
echo "对不起,文件 ".$f_name." 已经存在,上传失败!<br />";
$up_error="yes";
}
$string = 'abcdefghijklmnopgrstuvwxyz0123456789';
$rand = '';
for ($x=0;$x<12;$x++)
$rand .= substr($string,mt_rand(0,strlen($string)-1),1);
$t=date("ymdHis").substr($gettime[0],2,6).$rand;
$attdir=$flash_path.$sort."/";
if(!is_dir(".".$attdir))
{ mkdir(".".$attdir);}
$uploadfile=$attdir.$t.".".$tmp_type;
if(($up_error!="yes") and (move_uploaded_file($_FILES[$f_input]['tmp_name'][$key],".".$uploadfile))){
$temp[$m]=$uploadfile;//上传文件地址
echo "文件 ".$f_name." 上传成功!<br />";
}
}
$m++;
}
function addFile(dvID,inputNamePrefix)
{
var dv = document.getElementById(dvID);
var file = document.createElement("label");
file.innerHTML = "第"+i1+"集 ";
var file1 = document.createElement("select");
file1.name = "ftype[]";
file1.id=i1;
file1.onchange = function() {
var as =document.getElementById("file"+file1.id);
var af=document.getElementById("guide"+file1.id);
var a=document.getElementById(file1.id).value;
if(a==1){
as.style.display="none";
af.style.display="inline";
}
else{
as.style.display="inline";
af.style.display="none";
}
}
var file3 = document.createElement("option");
file3.value = "0";
file3.text="远程地址";
var file4 = document.createElement("option");
file4.value = "1";
file4.text="本地上传";
file1.add(file3);
file1.add(file4);
var file2 = document.createElement("input");
file2.type = "text";
file2.id ="file"+i1;
file2.name = "guide1[]";
var file5 = document.createElement("input");
file5.type="file";
file5.name="guide[]";
file5.id="guide"+i1;
file5.style.display="none";
dv.appendChild(file);
dv.appendChild(file1);
dv.appendChild(file2);
dv.appendChild(file5);
var btn = document.createElement("input");
btn.type = "button";
btn.id = btn.name = "btn" + i1;
btn.value = "删除";
btn.onclick = function() {
var b = document.getElementById(btn.id);
dv.removeChild(b.nextSibling); //remove <BR >
dv.removeChild(b.previousSibling); //file
dv.removeChild(b.previousSibling);
dv.removeChild(b.previousSibling);
dv.removeChild(b.previousSibling);
dv.removeChild(b); //btn
} dv.appendChild(btn); dv.appendChild(document.createElement("BR")); i1++;
} <span id='idfilespan'></span><br />
<a id=attach onclick="addFile('idfilespan','filename')" href="javascript:;">添加内容</a>
你要把<form>和</form>移到<table>外面,不要放在<table>里,
这样firefox里的问题就好了
aElement.name=nm;
aElement.id=nm;
aElement.type="file";
aElement.size="50";
aElement.value="30000";
=====================================
这个要改一下:
try{
var aElement=document.createElement("<input type='file' name='"+nm+"' id='"+nm+"'>");
}catch(e){
var aElement=document.createElement("input");
aElement.name=nm;
aElement.id=nm;
aElement.type="file";
}
aElement.size="50";
aElement.value="30000";