时间会让人遗忘一切,而整理遗忘的知识会让你在未来的路上不迷茫!
<!DOCTYPE html>
<html>
<head>
<title>文件上传</title>
<meta charset="utf-8">
</head>
<body>
<center>
<!-- enctype="mulipart/form-data"属性是指以二进制方式进行数据传输
传输文件需要设置-->
<form action="upload_server.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="max_file_size" value="1048576">
<input type="file" name="file">
<input type="submit" name="上传">
</form>
</center>
</body>
</html>
文件上传的接收,处理都写在以下这段代码中,这个文件起名为upload_server.php
<?php
header("content-type:text/html;charset=utf-8");
//设置时区
date_default_timezone_set('PRC');
//获取文件名
$filename = $_FILES['file']['name'];
//获取文件临时路径
$temp_name = $_FILES['file']['tmp_name'];
//获取大小
$size = $_FILES['file']['size'];
//获取文件上传码,0代表文件上传成功
$error = $_FILES['file']['error'];
//判断文件大小是否超过设置的最大上传限制
if ($size > 2*1024*1024){
//
echo "<script>alert('文件大小超过2M大小');window.history.go(-1);</script>";
exit();
}
//phpinfo函数会以数组的形式返回关于文件路径的信息
//[dirname]:目录路径[basename]:文件名[extension]:文件后缀名[filename]:不包含后缀的文件名
$arr = pathinfo($filename);
//获取文件的后缀名
$ext_suffix = $arr['extension'];
//设置允许上传文件的后缀
$allow_suffix = array('jpg','gif','jpeg','png');
//判断上传的文件是否在允许的范围内(后缀)==>白名单判断
if(!in_array($ext_suffix, $allow_suffix)){
//window.history.go(-1)表示返回上一页并刷新页面
echo "<script>alert('上传的文件类型只能是jpg,gif,jpeg,png');window.history.go(-1);</script>";
exit();
}
//检测存放上传文件的路径是否存在,如果不存在则新建目录
if (!file_exists('uploads')){
mkdir('uploads');
}
//为上传的文件新起一个名字,保证更加安全
$new_filename = date('YmdHis',time()).rand(100,1000).'.'.$ext_suffix;
//将文件从临时路径移动到磁盘
if (move_uploaded_file($temp_name, 'uploads/'.$new_filename)){
echo "<script>alert('文件上传成功!');window.history.go(-1);</script>";
}else{
echo "<script>alert('文件上传失败,错误码:$error');</script>";
}
?>
在文章结尾处,在附一个文件上传error码以及含义:
$_FILES[‘file’][‘error’]有以下几种类型
1、UPLOAD_ERR_OK:其值为 0,没有错误发生,文件上传成功。
4、UPLOAD_ERR_PARTIAL:其值为 3,文件只有部分被上传。
5、UPLOAD_ERR_NO_FILE:其值为 4,没有文件被上传。
7、UPLOAD_ERR_CANT_WRITE:其值为 7,文件写入失败。PHP 5.1.0 引进。
作者:阿南-anan
原文链接:https://blog.csdn.net/weixin_42380348/article/details/89199344
原文始发于微信公众号(天驿安全):PHP实现文件上传
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论