php - 上传带有输入字段的文件
问题描述
我已经包含了文件类型检查它下面的代码。如果我从允许的类型中选择 2 个文件,从不允许的类型中选择一个文件,则代码仍会保存允许的文件并显示文件类型的 msg。如果任何文件不是允许的文件,我希望代码不应该保存任何东西。
<?php
// Script written by Adam Khoury for the following video exercise:
// http://www.youtube.com/watch?v=7fTsf80RJ5w
if(isset($_FILES['file_array'])) {
$name_array = $_FILES['file_array']['name'];
$tmp_name_array = $_FILES['file_array']['tmp_name'];
$type_array = $_FILES['file_array']['type'];
$size_array = $_FILES['file_array']['size'];
$error_array = $_FILES['file_array']['error'];
for($i = 0; $i < count($tmp_name_array); $i++){
$fileext [$i] = explode('.', $name_array[$i]);
$fileactualext[$i] = strtolower(end($fileext[$i]));
$allowed = array("jpg","jpeg", "pdf");
if (in_array($fileactualext[$i], $allowed)) {
if(move_uploaded_file($tmp_name_array[$i], "test_uploads/".$name_array[$i])) {
echo $name_array[$i]."upload is complete<br>";
} else {
echo "move_uploaded_file function failed for ".$name_array[$i]."<br>";
}
} else {
header('location:file_type.php');
}
}
}
?>
解决方案
使用以下代码检查图像大小、类型、错误、
$file_ext=strtolower(end(explode('.',$_FILES['file_array']['name'])));
$extensions= array("jpeg","jpg","png");
if(in_array($file_ext,$extensions)=== false){
$errors[]="extension not allowed, please choose a JPEG or PNG file.";
}
if($file_size > 2097152){ // set whatever max size you want
$errors[]='File size must be excately 2 MB';
}
if(empty($errors)==true){
move_uploaded_file($file_tmp,"images/".$file_name);
echo "Success";
}else{
print_r($errors);
}
推荐阅读
- c# - 刚体游戏对象在移动时被限制移动
- c - 为什么使用 n=sizeof(myarray)/sizeof(myarray[0]) 会给出“注释”错误,但为 n 指定数值不会?
- reference - 在 STM32CubeIDE(基于 Eclipse 的 IDE)中添加新的源文件和头文件不能无缝工作
- objective-c - 如何在 Swift 中使用 Objective-C 可视化工具
- c# - 处理单例和静态对象
- prestashop - 使用 smarty 从模板中获取元素 id - Prestahop
- react-admin - 了解 React-Admin 翻译
- yii2 - yii2 swift mail 会变成垃圾邮件
- php - WordPress:使用
- spring - SAML 与带有 DB 登录的 Spring Boot 集成(多个 WebSecurityConfigurerAdapter)