文件上传及存储
使用form表单提交例如:
<form action="chuli.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="上传" />
</form>
在处理页面不使用post,使用$_FILES[],返回的是一个数组,具体信息如下:
var_dump($_FILES["file"]);
array(size=5)
'name' =>
string
'Lenovo_SF.jpg'(length=13) 'type' =>string
'image/jpeg'(length=10) 'tmp_name' =>string
'D:\Program Files\MySql\wamp\tmp\phpCC75.tmp'(length=43) 'error' =>int
0 'size' =>int
1032323
上传文件需要注意的问题:
1.控制上传文件的类型和大小:因为安全性以及服务器的空间有限
2.减少文件重名的概率 修改文件名 建文件夹:因为上传同名文件会覆盖以前的文件
3.关于中文乱码问题:因为编码格式问题,windows编码格式为gb2312
4.存储文件的问题:因为上传的文件存在临时文件夹中,程序关闭会清空
if($_FILES["file"]["type"] == "image/jpeg" && $_FILES["file"]["size"]<=102400){
//造一个存储路径
$yuan = $_FILES["file"]["tmp_name"];
$filename = "./img/".date("YmdHis").$_FILES["file"]["name"];
//将存储路径的编码格式变为国标
$filename = iconv("UTF-8","gb2312",$filename); //任何地方都可以用来转码
//判断文件是否存在
if(file_exists($filename)) {
die("文件已存在");
}
//移动文件
move_uploaded_file($yuan,$filename);
}
图片预览上传工具
向数据库中存注册信息,在读取出来,其中文件存取和读取的都是路径,需要注意的是存的时候存绝对路径
实例:上传与下载
注册页面:
<h1>上传文件</h1>
<div>说明:只能上传word文档,上传文件的大小必须小于1M</div>
<br />
<form action="scchuli.php" method="post" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="上传" />
</form>
处理页面:
<?php
session_start();
$_SESSION["uid"] = "lisi";
include("../../DBDA.php");
$db = new DBDA();
$filename="";
//加限制条件
if($_FILES["file"]["type"]=="application/vnd.openxmlformats-officedocument.wordprocessingml.document" && $_FILES["file"]["size"]<1048576)
{
//造存储路径
$filename = "./uploads/".date("YmdHis").$_FILES["file"]["name"];
//转编码格式
$filename = iconv("utf-8","gb2312",$filename);
//文件是否存在
if(!file_exists($filename))
{
//移动文件保存
move_uploaded_file($_FILES["file"]["tmp_name"],$filename);
}
}
//向文件表添加一条数据
$uid = $_SESSION["uid"];
$lujing = iconv("gb2312","utf-8",$filename);
$urls = "/0630/wenjian/".$lujing;
$times = date("Y-m-d H:i:s");
$name = $_FILES["file"]["name"];
$sql = "insert into wenjian values('','{$uid}','{$urls}','{$times}','{$name}')";
$db->Query($sql,0);
header("location:guanli.php");
显示页面:
<?php
session_start();
include("../../DBDA.php");
$db = new DBDA();
$uid = $_SESSION["uid"];
$sql = "select * from wenjian where uid='{$uid}'";
$attr = $db->Query($sql);
?>
<h1>文件管理页面</h1>
<table width="100%" border="1" cellpadding="0" cellspacing="0">
<tr>
<td>上传者</td>
<td>上传时间</td>
<td>文件名</td>
<td>操作</td>
</tr>
<?php
foreach($attr as $v)
{
$sname = "select name from users where uid='{$v[1]}'";
$name = $db->StrQuery($sname);
echo "<tr>
<td>{$name}</td>
<td>{$v[3]}</td>
<td>{$v[4]}</td>
<td><a href='{$v[2]}'>下载</a></td>//浏览器打不开会下载
</tr>";
}
?>
</table>
+++雍家培+++