Php上传文件方法小结
Php上传文件方法小结
Demo源码在最后附件
过程解析
①、Php接收从html传来的数据(post方式),上传的文件信息会保存在php的全局变量$_FILES中。
②、使用html中file标签的name属性值获取传过来的文件信息,先校验上传文件是否成功,若成功,则文件信息中的error属性为0,否则上传异常。
③、验证格式是否符合。
④、获取文件的后缀名。
⑤、使用时间戳和一个随机数生成一个在目的文件夹中不存在的文件名,并生成文件的路径。
⑥、验证上传的文件是否合法(文件是通过 HTTP POST 上传的为合法)。
⑦、将上传的临时文件移动到⑤生成的文件路径。
⑧、可以引入jquery.form.js插件用来获取表单提交后接口的返回值。
【附件】
upload.html
<html>
<body>
<!—上传文件的表单enctype加密类型一定要申明
-->
<form enctype="multipart/form-data" action="/upload.php"
method="POST">
<!-- MAX_FILE_SIZE 设置上传文件的最大上限(字节)1m = 1024K = 1024*1024字节 -->
<input type="hidden"
name="MAX_FILE_SIZE" value="2097152" />
<!—file的name属性要和php中 $_FILES 接收的一样
-->
Send this file: <input
name="file" type="file" />
<input type="submit"
value="Send File" />
</form>
</body>
</html>
upload.php
<?php
// 获取要上传文件的信息
$upInfo = @$_FILES['file'];// ‘file’是html中file的name属性值
$typeList = array("image/gif","image/jpeg",
"image/jpg", "image/png"); // 支持的格式(限制)
$toPath = "upload";// 目标文件夹
uploadFile($upInfo, $typeList, $toPath);
function uploadFile($file, $typeList, $toPath) {
if ($file['error'] > 0) {// 判断文件是否上传错误
switch ($file['eeror']) {
case 1 : $errorMsg = "上传的文件超过了 php.ini 中 upload_max_filesize 选项限制的值";break;
case 2 : $errorMsg = "上传文件的大小超过了 HTML 表单中 MAX_FILE_SIZE 选项指定的值";break;
case 3 : $errorMsg = "文件只有部分被上传";break;
case 4 : $errorMsg = "没有文件被上传";break;
case 5 : $errorMsg = "找不到临时文件夹";break;
default : $errorMsg = "未知的上传错误";break;
}
die($errorMsg);
}
if (!in_array($file['type'],
$typeList)) die("不支持的格式");
$extName = pathinfo($file['name'],
PATHINFO_EXTENSION);
do {
$name =
date("YmdHis").rand(100, 999);
$fileName =
$name.".".$extName;
$filePath = $toPath.'/'.$fileName;
}while (file_exists($filePath));
if
(is_uploaded_file($file['tmp_name'])) {
$result =
move_uploaded_file($file['tmp_name'], $filePath) ? "文件上传成功!" : "文件移动失败!";
echo $result;
}
}

浙公网安备 33010602011771号