$sort=12;
$f_type=strtolower("sql,txt,doc,docx,pdf,swf,jpg,rar,zip,7z,iso,gif");//设置可上传的文件类型
$file_size_max=200*1024*1024;//限制单个文件上传最大容量
$overwrite = 0;//是否允许覆盖相同文件,1:允许,0:不允许
$f_input="Files";//设置上传域名称
foreach($_FILES[$f_input]["error"] as $key => $error){
$up_error="no";
if ($error == UPLOAD_ERR_OK){
$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 "<script>alert('对不起,不能上传".$tmp_type."格式文件, ".$f_name." 文件上传失败!')</script>";
$up_error="yes";
}
if ($_FILES[$f_input]['size'][$key]>$file_size_max) {
echo "<script>alert('对不起,你上传的文件 ".$f_name." 容量为".round($_FILES[$f_input]
['size'][$key]/1024)."Kb,大于规定的".($file_size_max/1024)."Kb,上传失败!')</script>";
$up_error="yes";
}
if (file_exists($uploadfile)&&!$overwrite){
echo "<script>alert('对不起,文件 ".$f_name." 已经存在,上传失败!')</script>";
$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="./file/$teacher/";
if(!is_dir($attdir))
{ my_msg('请联系管理员创建个人目录','FileUpload.htm');}
$uploadfile=$attdir.$t.".".$tmp_type;
if(($up_error!="yes") and (move_uploaded_file($_FILES[$f_input]['tmp_name'][$key], $uploadfile))){
$_msg=$_msg.$f_name.'上传成功\n';
}
else{
$_msg=$_msg.$f_name.'上传失败\n';
}
}
}
// 把文件信息插入数据库
$sql="INSERT INTO attachments (filename,filesize,filetype,filepath,date) VALUES ('$f_name', '$attach['size']', '$tmp_type', '$attdir', now())";mysql_query($sql) or die("ERROR:".mysql_error()."</br>SQL=".$sql);
echo "<script>window.parent.Finish('".$_msg."');</script>";
?>去掉sql语句,程序上传正常,问题就出在sql语句上,可能是我写的value值有错误,高手帮忙指点一下;另外文件名如果重命名成时间+随机数的,那调用的时候该怎么办
$f_type=strtolower("sql,txt,doc,docx,pdf,swf,jpg,rar,zip,7z,iso,gif");//设置可上传的文件类型
$file_size_max=200*1024*1024;//限制单个文件上传最大容量
$overwrite = 0;//是否允许覆盖相同文件,1:允许,0:不允许
$f_input="Files";//设置上传域名称
foreach($_FILES[$f_input]["error"] as $key => $error){
$up_error="no";
if ($error == UPLOAD_ERR_OK){
$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 "<script>alert('对不起,不能上传".$tmp_type."格式文件, ".$f_name." 文件上传失败!')</script>";
$up_error="yes";
}
if ($_FILES[$f_input]['size'][$key]>$file_size_max) {
echo "<script>alert('对不起,你上传的文件 ".$f_name." 容量为".round($_FILES[$f_input]
['size'][$key]/1024)."Kb,大于规定的".($file_size_max/1024)."Kb,上传失败!')</script>";
$up_error="yes";
}
if (file_exists($uploadfile)&&!$overwrite){
echo "<script>alert('对不起,文件 ".$f_name." 已经存在,上传失败!')</script>";
$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="./file/$teacher/";
if(!is_dir($attdir))
{ my_msg('请联系管理员创建个人目录','FileUpload.htm');}
$uploadfile=$attdir.$t.".".$tmp_type;
if(($up_error!="yes") and (move_uploaded_file($_FILES[$f_input]['tmp_name'][$key], $uploadfile))){
$_msg=$_msg.$f_name.'上传成功\n';
}
else{
$_msg=$_msg.$f_name.'上传失败\n';
}
}
}
// 把文件信息插入数据库
$sql="INSERT INTO attachments (filename,filesize,filetype,filepath,date) VALUES ('$f_name', '$attach['size']', '$tmp_type', '$attdir', now())";mysql_query($sql) or die("ERROR:".mysql_error()."</br>SQL=".$sql);
echo "<script>window.parent.Finish('".$_msg."');</script>";
?>去掉sql语句,程序上传正常,问题就出在sql语句上,可能是我写的value值有错误,高手帮忙指点一下;另外文件名如果重命名成时间+随机数的,那调用的时候该怎么办
觉得是sql的问题 那就打印sql语句看看就行了调用是什么意思?引用文件的路径?重命名的文件名保存在db不就好了
改成
$sql="INSERT INTO attachments (filename,filesize,filetype,filepath,date) VALUES ('$f_name', '".$attach['size']."', '$tmp_type', '$attdir', now())";
另外文件名如果重命名成时间+随机数的,那调用的时候该怎么办?
可以在数据库中直接存: 路径+图片文件名