php - 只允许 zip 文件上传
问题描述
我已经做了一个上传表格。但我希望用户能够上传 .zip 文件和 .rar 文件。我已经尝试过以下方法:
$ftp_server = "myserver";
$ftp_user_name = "myuser";
$ftp_user_pass = "mypass";
$source_file = $_FILES['file']['tmp_name'];
$fileType = $_FILES['file']['type'];
$fileExt = explode('.', $filename);
$fileActualExt = strtolower(end($fileExt));
$destination_folder = "/public_html/wp/wp-content/plugins/AbonneerProgrammas/FilesUpload";
$destination_file = $destination_folder . "/" . basename($_FILES['file']['name']);
$conn_id = ftp_connect($ftp_server);
// login with username and password
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, true);
$allowed = array('zip', 'rar');
if(in_array($fileActualExt, $allowed)) {
//my upload code
}else {
echo "You are not allowed to upload this file.";
}
它没有显示任何错误。它只进入 else 内部。当我上传 .zip 文件时它也会这样做,我不知道出了什么问题。
解决方案
1.您需要使用pathinfo()来获取文件扩展名。
2.$filename
在你的代码中没有定义,所以它会给你警告,并且扩展检查代码总是会失败。
修改代码如下:
$ftp_server = "myserver";
$ftp_user_name = "myuser";
$ftp_user_pass = "mypass";
$source_file = $_FILES['file']['tmp_name'];
$fileType = $_FILES['file']['type'];
/*get file extension [*/
$fileExt = pathinfo($_FILES["file"]["name"], PATHINFO_EXTENSION);
$fileExt = strtolower($fileExt);
/* ] */
$destination_folder = "/public_html/wp/wp-content/plugins/AbonneerProgrammas/FilesUpload";
$destination_file = $destination_folder . "/" . basename($_FILES['file']['name']);
$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
ftp_pasv($conn_id, true);
$allowed = array('zip', 'rar');
/*use $extension variable to check allowed or not [*/
if(in_array($fileExt, $allowed)) {
//my upload code
}else {
echo "U mag dit type bestand niet uploaden.";
}
/* ] */
推荐阅读
- node.js - nodejs中的OTP验证?
- loops - 如何提高 Google 表格应用脚本中 for 循环的速度?
- python - 如何在每个子窗口中绘制图形
- node.js - React-Admin 分页无法正常工作?
- javascript - 满足最终条件时,我的 IF 语句停止运行
- python - 错误:索引 2 超出轴 0 的范围,大小为 2
- reactjs - 我无法让我的钩子正常工作
- mysql - 我需要通过多个分隔符将 mysql 字段(字符串)拆分为 json 对象
- python - 使用 python,我需要每天使用 MongoDB api 将文档从 Azure CosmosDB 传输到 Postrgres,可能使用 Azure 函数
- javascript - 跟随光标位置将图像添加到 DOM