本文最后更新于 2024-06-09,文章内容可能已经过时。

文件上传

一、文件上传实现

1、通过form表单提交上传数据

注意:

  • 上传时候,一定要能使用POST方法提交
  • 表单已经使用enctype="multipart/form-data"属性
<form action="../php/upload.php" method="post" enctype="multipart/form-data">
	<input type="file" name="photo">
	<input type="submit" value="确定">
</form>

2、php: 通过超全局变量接收文件

$name = $_FILES['photo']['name'];    //获取文件名字
$tmp = $_FILES['photo']['tmp_name'];     //获取临时保存文件
$type = $_FILES['photo']['type'];   //获取文件MIME类型
$size = $_FILES['photo']['size'];   //获取文件大小

二、保存上传文件

1、删除已存在的同名文件:

@unlink(文件名);
@: 不在页面显示报错信息,(如果文件不存在,unlink会报错)

2、判断文件是否存在:

file_exists(文件名);

3 、输入输出流方式保存文件:

$f = fopen("/tmp/abc",'r');
$content = fread($f,$size); 
fclose($f);

$f = fopen("../images/$name",'w');
fwrite($f,$content);
fclose($f);

4、读写文件函数操作:

$content = file_get_contents($f);    //读文件
file_put_contents($f,$content);        //写文件

5、文件移动函数:

move_uploaded_file($f,"../images/$name");

三、修改保存文件的名称

1、获取扩展名:

$ext = end(explode($name));

2、生成新名称:

//设置时区date_default_timezone_set("PRC");
//或者全局修改时区:修改php.ini文件,将Module Settings的[Date]块的date.timezone前的;去掉,改成date.timezone = PRC。这样在程序里直接使用date函数就可以了。

$newName = date("ymdhis").rand(100,999).".".$ext;