多文件上传问题(简单的php / html)

时间:2018-04-07 10:01:04

标签: php file-upload

下面代码的唯一问题 - 如果没有选择图像,它会创建一条记录。如果没有选择任何一个图像,则不应该继续执行代码。这种方法适用于单一类型的图像形式。

if(!empty($_FILES['gallery']['name'])) {
            for ($i=0; $i < count($_FILES['gallery']['tmp_name']); $i++) { 
            $gallery_tmp = $_FILES['gallery']['tmp_name'][$i];
            $gallery = time().$_FILES['gallery']['name'][$i];
            move_uploaded_file($gallery_tmp, "../uploads/$gallery");
            $sql = mysqli_query($database->connection, "INSERT INTO gallery (img) VALUES ('$gallery')");
            }
        }

HTML代码如下:

<form action="" method="post" enctype="multipart/form-data">
<input type="file" name="gallery[]" class="form-control" multiple="multiple">
<input type="submit" name="submit" value="Update" class="">
</form>

2 个答案:

答案 0 :(得分:1)

添加条件,如果图像未上传,则其记录不会被插入数据库。

更新代码:

if(!empty($_FILES['gallery']['name'])) {
    for ($i=0; $i < count($_FILES['gallery']['tmp_name']); $i++) { 
        $gallery_tmp = $_FILES['gallery']['tmp_name'][$i];
        $gallery = time().$_FILES['gallery']['name'][$i];
        $is_uploaded = move_uploaded_file($gallery_tmp, "../uploads/$gallery");

        if( $is_uploaded == TRUE ) {
            $sql = mysqli_query($database->connection, "INSERT INTO gallery (img) VALUES ('$gallery')");
        }
    }
}

答案 1 :(得分:1)

即使您没有发送任何图片,您的$ _FILES [&#39;画廊&#39;] [&#39;名称&#39;]也不是空的,它会包含1个空名称的元素。< / p>

你可以通过检查第一个elemetn是否为空来做坏事:

if(!empty($_FILES['gallery']['name'][0])) {

但是你应该检查它是否在循环中是空的。

也不要通过

来信任用户输入
$gallery = time().$_FILES['gallery']['name'][$i];
move_uploaded_file($gallery_tmp, "../uploads/$gallery");

有人可以命名文件test.php并上传你的代码,或者设置名称&#34; ../../ index.php并覆盖你的index.php:)