多张图片上传通过 php 验证

Posted

技术标签:

【中文标题】多张图片上传通过 php 验证【英文标题】:Multi image upload validate by php 【发布时间】:2021-06-11 01:23:12 【问题描述】:

我根据这篇帖子https://***.com/a/30074716/14787718(它的工作代码)修改了我的上传代码

但是我的代码不起作用,请帮忙。

我的完整代码在这里:https://sandbox.onlinephpfunctions.com/code/c62b6bdf6fadd5aff63b2e7e65e75c1075d1dbb0

<?php
if (isset($_POST['upload']) && $_FILES['image']['error']==0) 
$j = 0; //Variable for indexing uploaded image 

for ($i = 0; $i < count($_FILES['image']['name']); $i++) //loop to get individual element from the array

    $allow_ext = array('png','jpg','gif','jpeg','bmp','tif');
    $allow_type = array('image/png','image/gif','image/jpeg','image/bmp','image/tiff');

    $image_name = $_FILES['image']['name'][$i];
    $image_type = getimagesize($_FILES['image']['tmp_name'][$i]);
    $image_name = explode('.',$image_name);
    $ext = end($image_name);
    $j = $j + 1;//increment the number of uploaded images according to the files in array       

    if(in_array($ext, $allow_ext) && in_array($image_type['mime'], $allow_type))
        list($width, $height, $mime) = getimagesize($_FILES['image']['tmp_name'][$i]);
        if ($width>0 && $height>0) 
            $upload = move_uploaded_file($_FILES['image']['tmp_name'][$i], "uploads/".$_FILES['image']['name'][$i]);
            if ($upload) 
                echo '<p>File Uploaded: <a href="uploads/'.$_FILES['image']['name'][$i].'">View Image</a></p>';
            
         else 
        echo 'Error: Only image is allowed!';
        
     else 
        echo 'Error: Invalid File Type!';
    
 

?>

谢谢!

【问题讨论】:

请输入您所面临的错误的sn-p。 @Mahesh 选择文件并点击上传后,没有任何反应 更新了我的完整代码 【参考方案1】:

首先将 Jquery 调用移动到引导之前:

<script src='https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.0/jquery.min.js'></script>
<script src='https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.4.0/js/bootstrap.min.js'></script>

在您的第一次测试中:if (isset($_POST['upload']) && $_FILES['image']['error']==0)。 $_FILES['image']['error'] 是一个数组。

删除此测试以仅保留if ( isset($_POST['upload']) )

在你for步骤中添加这个测试:

for ($i = 0; $i < count($_FILES['image']['name']); $i++) //loop to get individual element from the array

        if ($_FILES['image']['error'][$i]==0) 

经过测试,效果很好!

【讨论】:

以上是关于多张图片上传通过 php 验证的主要内容,如果未能解决你的问题,请参考以下文章

element-ui 表单新建 编辑 多张图片上传与删除

上传多张图片时收到错误[重复]

使用 AJAX、PHP 和 jQuery 上传多张图片

使用 AJAX、PHP 和 jQuery 上传多张图片

php 使用fileupload上传多张图片,压缩包

微信js sdk上传多张图片