PHP原生动态多文件上传并将路径存储在数据库
Posted PHP后端开发|产品运营推广
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP原生动态多文件上传并将路径存储在数据库相关的知识,希望对你有一定的参考价值。
动态多文件上传并将路径存储在数据库
1、上传页面index.html
<!DOCTYPE html >
<html>
<head>
<metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/>
<title>多图片上传</title>
<script>
//全局变量,代表文件域的个数,并用该变量区分文件域的name属性
var file_count =1;
//增加文件 域
function additem(id){
if(file_count >9){
alert("注意:最多上传十张图片!");
return;
}
//定义行变量row;单元格变量cell;单元格内容变量str。
var row,cell,str;
//在指定id的table中插入一行
row =eval("document.all["+‘"‘+id+‘"‘+"]").insertRow();
if(row !=null){
//设置行的背景颜色
row.bgColor="white";
//在行中插入单元格
cell = row.insertCell();
//设置str的值,包括一个文件域和一个删除按钮
str=‘<input onselectstart="return false" class="tf" onpaste="return false" type="file" name="file[‘+ file_count +‘]" onkeydown="return false;"/>‘;
str +=" <input type="+‘"‘+"button"+‘"‘+" value="+‘"‘+"删除"+‘"‘+" onclick=‘deleteitem(this,"+‘"‘+"tb"+‘"‘+");‘>";
//文件域个数增加
file_count++;
//设置单元格的innerHTML为str的内容
cell.innerHTML=str;
}
}
//删除文件域
function deleteitem(obj,id){
var rowNum,curRow;
curRow = obj.parentNode.parentNode;
rowNum =eval("document.all."+id).rows.length -1;
eval("document.all["+‘"‘+id+‘"‘+"]").deleteRow(curRow.rowIndex);
file_count--;
}
</script>
</head>
<body>
<formaction="upload.php"method="post"enctype="multipart/form-data">
<inputonselectstart="returnfalse"class="tf"onpaste="returnfalse"type="file"name=file[0]onkeydown="returnfalse;"/>
<inputtype=buttonvalue="增加"onclick=‘additem("tb")‘/><br/>
<tablecellspacing="0"id="tb"style="width:400px">
</table>
<br/>
<br/>
<inputtype="submit"name="submit"value="上传"/>
<inputtype="reset"name="reset"value="重置"/>
</form>
</body>
</html>
2、表单处理页面
<?php include "conn.php"; //设置编码为UTF-8,以避免中文乱码 header(‘Content-Type:text/html;charset=utf-8‘); $fileArray = $_FILES[‘file‘]; //获取多个文件的信息 $upload_dir = ‘upload/‘; //保存上传文件的目录 foreach ($fileArray[‘error‘] as $key => $error) { if (($fileArray["type"][$key] == "image/gif" || $fileArray["type"][$key] == "image/jpeg" || $fileArray["type"][$key] == "image/png"
|| $fileArray["type"][$key] == "image/pjpeg") && $fileArray["size"][$key] < 1000000) { //限制上传文件大小_单位B。1M=1024KB=1048576 B if ($error == UPLOAD_ERR_OK) { //PHP常量UPLOAD_ERR_OK=0,表示上传没有出错 $temp_name = $fileArray[‘tmp_name‘][$key]; $file_name = date("YmdHis") . rand() . ‘.png‘; //日期+随机数命名图片 move_uploaded_file($temp_name, $upload_dir . $file_name); //存入数据库命名和路径 $title = $file_name; $path = $upload_dir . $file_name; // 注意valuse后的格式 (‘ " . $变量名 . " ‘) $query = mysql_query($conn, "insert into images(title,path) values (‘" . $title . "‘,‘" . $path . "‘)"); echo "<script>alert(‘上传成功!‘);window.location.href=‘up_images.php‘;</script>"; } else { echo "<script>alert(‘上传失败!‘);window.location.href=‘up_images.php‘;</script>"; } } }
以上是关于PHP原生动态多文件上传并将路径存储在数据库的主要内容,如果未能解决你的问题,请参考以下文章