发布于2026-07-03 阅读(0)
扫一扫,手机访问
在Linux环境下用PHP做文件上传,其实是很多开发者绕不开的基本功。网上教程不少,但大多干巴巴地直接贴代码,有些关键细节反而没说清楚。今天我们就从一个实际可运行的例子出发,把整个流程拆开揉碎了讲一遍。

先搭一个HTML表单——让用户能选文件
这一步没什么高深的技术,关键就一句话:表单的 enctype 属性必须设为 multipart/form-data,不然文件数据没法正确传输。看看下面这个最简单的例子:
File Upload
注意 action 指向的是处理脚本 upload.php,后面我们就要写这个核心文件。
PHP脚本——真正干活的逻辑都在这里
新建一个 upload.php,它要完成四件事:检查上传是否成功、验证文件类型和大小、判断是否重复、移动到指定目录。下面这段代码是标准写法,注释已经写得比较清楚了:
500000) { // 限制500KB
echo "Sorry, your file is too large.";
$uploadOk = 0;
}
// 允许特定文件格式
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
$uploadOk = 0;
}
// 检查$uploadOk是否被置0
if ($uploadOk == 0) {
echo "Sorry, your file was not uploaded.";
} else {
if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
} else {
echo "Sorry, there was an error uploading your file.";
}
}
?>
几个容易踩的坑:文件大小限制单位是字节(500000 就是 500KB 约 0.5MB),getimagesize() 只能检查图片类文件,如果你允许其他格式记得把这部分逻辑改掉。另外 move_uploaded_file 一旦失败,多半是权限问题——这就引出第三步。
目录权限——光写代码不行,还得给Linux下个命令
在终端执行:
mkdir uploads
chmod 755 uploads
先创建 uploads/ 目录,然后给 755 权限(所有者可读写执行,其他人只读执行)。如果权限太严格(比如 700),Web 服务器用户(通常是 www-data 或 nobody)就没法写入文件了。
这样一套流程跑下来,上传功能就基本成型了。当然实际生产环境还需要考虑更多细节:比如文件名冲突时自动重命名、限制文件存储路径不可被直接访问、对大文件做分片处理等等。但这些属于进阶话题,先把基础链路跑通,后面再逐步完善也不迟。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8