gpt4 book ai didi

php - 借助数组上传图像

转载 作者:行者123 更新时间:2023-11-29 07:01:05 25 4
gpt4 key购买 nike

昨天我开始编写用于将图像上传到目录的上传文件。因为我认识到我必须使用数组来更好地处理这个问题,所以我到了现在正在使用的地步:

 if(!empty($_FILES['image']['tmp_name'])){  

$allowed_extension = array('jpg', 'jpeg', 'png', 'bmp', 'tiff', 'gif');

foreach($_FILES['image']['name'] as $key => $array_value){

$file_name = $_FILES['image']['name'][$key];
$file_size = $_FILES['image']['size'][$key];
$file_tmp = $_FILES['image']['tmp_name'][$key];

$file_extension = strtolower(end(explode('.', $file_name)));
if (in_array($file_extension, $allowed_extension) === false){
$errors[] = 'file is not accepted';
}

if ($file_size > 2097152){
$errors[] = 'maxsize: 2MB';
}

$path = "a/b/c/";
$uploadfile = $path."/".basename($_FILES['image']['name'][$key]);

if (move_uploaded_file($_FILES['image']['tmp_name'][$key], $uploadfile)){
echo "Das Bildmaterial wurde hochgeladen.";
}
}
}

问题是即使给出了一个不被接受的结尾,我也可以一直上传文件。我不明白为什么在应该显示错误消息而不是上传时发生上传。我喜欢通过嵌入允许的代码扩展来达到更高的安全性。如果有人可以告诉我我做错了什么,我将不胜感激。非常感谢。

最佳答案

您有两个 if 语句检查异常,但随后什么都不做。

也许以下内容会有所帮助?

if(!empty($_FILES['image']['tmp_name'])){  

$allowed_extension = array('jpg', 'jpeg', 'png', 'bmp', 'tiff', 'gif');

foreach($_FILES['image']['name'] as $key => $array_value){

$file_name = $_FILES['image']['name'][$key];
$file_size = $_FILES['image']['size'][$key];
$file_tmp = $_FILES['image']['tmp_name'][$key];

$errors = array ();
$file_extension = strtolower(end(explode('.', $file_name)));
if (in_array($file_extension, $allowed_extension) === false){
$errors[] = 'file is not accepted';
}

if ($file_size > 2097152){
$errors[] = 'maxsize: 2MB';
}

if (count ($errors) == 0) {
$path = "a/b/c/";
$uploadfile = $path."/".basename($_FILES['image']['name'][$key]);

if (move_uploaded_file($_FILES['image']['tmp_name'][$key], $uploadfile)){
echo "Das Bildmaterial wurde hochgeladen.";
}
}
else {
// do stuff with errors
}
}
}

关于php - 借助数组上传图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10087975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com