多个图片上传如何制作呢?

时间:2017-03-13 18:58:01

标签: php html mysql image

嗨我有一个代码,如果我想将一个图像上传到我的mysql和服务器,它可以正常工作。

PHP代码:

    if(isset($_POST['btnsave']))
{   foreach($_FILES['user_image']['tmp_name'] as $key => $tmp_name ){

    $username = $_POST['user_name'];
    $userjob = $_POST['user_job'];

    $imgFile = $key.$_FILES['user_image']['name'][$key];
    $tmp_dir = $_FILES['user_image']['tmp_name'][$key];
    $imgSize = $_FILES['user_image']['size'][$key];
}

    if(empty($username)){
        $errMSG = "Please Enter Username.";
    }
    else if(empty($userjob)){
        $errMSG = "Please Enter Your Job Work.";
    }
    else if(empty($imgFile)){
        $errMSG = "Please Select Image File.";
    }
    else
    {
        $upload_dir = 'user_images/'; 
        $imgExt = strtolower(pathinfo($imgFile,PATHINFO_EXTENSION)); 
        $valid_extensions = array('jpeg', 'jpg', 'png', 'gif'); 
        $userpic = rand(1000,1000000).".".$imgExt;
        if(in_array($imgExt, $valid_extensions)){           
            if($imgSize < 5000000)              {
                move_uploaded_file($tmp_dir,$upload_dir.$userpic);
            }
            else{
                $errMSG = "Sorry, your file is too large.";
            }
        }
        else{
            $errMSG = "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";        
        }
    }
    if(!isset($errMSG))
    {
        $stmt = $DB_con->prepare('INSERT INTO tbl_users(userName,userProfession,userPic) VALUES(:uname, :ujob, :upic)');
        $stmt->bindParam(':uname',$username);
        $stmt->bindParam(':ujob',$userjob);
        $stmt->bindParam(':upic',$userpic);

        if($stmt->execute())
        {
            $successMSG = "new record succesfully inserted ...";
            header("refresh:5;index.php"); 
        }
        else
        {
            $errMSG = "error while inserting....";
        }
    }
}

Html代码:

    <?php
if(isset($errMSG)){
        ?>
        <div class="alert alert-danger">
            <span class="glyphicon glyphicon-info-sign"></span> <strong><?php echo $errMSG; ?></strong>
        </div>
        <?php
}
else if(isset($successMSG)){
    ?>
    <div class="alert alert-success">
          <strong><span class="glyphicon glyphicon-info-sign"></span> <?php echo $successMSG; ?></strong>
    </div>
    <?php
}
?>   

<form method="post" enctype="multipart/form-data" class="form-horizontal">

    <table class="table table-bordered table-responsive">

    <tr>
        <td><label class="control-label">Username.</label></td>
        <td><input class="form-control" type="text" name="user_name" placeholder="Enter Username" value="<?php echo $username; ?>" /></td>
    </tr>

    <tr>
        <td><label class="control-label">Profession(Job).</label></td>
        <td><input class="form-control" type="text" name="user_job" placeholder="Your Profession" value="<?php echo $userjob; ?>" /></td>
    </tr>

    <tr>
        <td><label class="control-label">Profile Img.</label></td>
        <td><input class="input-group" type="file" name="user_image[]" accept="image/*" multiple /></td>
    </tr>

    <tr>
        <td colspan="2"><button type="submit" name="btnsave" class="btn btn-default">
        <span class="glyphicon glyphicon-save"></span> &nbsp; save
        </button>
        </td>
    </tr>

    </table>

</form>

如何让代码用于多次上传?对于我将上传的所有图像,我将使用相同的值,除了'userPic' - 我的服务器上的文件的名称相同。你能帮帮我吗?

您好我发现了另外一个问题!也许你们可以帮助我?

如果我正在尝试上传例如6张图片,其中一个主题比maxsize更大,弹出错误,但其他所有文件都是在上传文件夹之前上传的。如果出现错误,如何删除此文件?

第二个问题是如何调整图像大小?任何代码?

1 个答案:

答案 0 :(得分:0)

将所有内容放在 foreach 块中。

if(isset($_POST['btnsave']))
{   foreach($_FILES['user_image']['tmp_name'] as $key => $tmp_name ){

$username = $_POST['user_name'];
$userjob = $_POST['user_job'];

$imgFile = $key.$_FILES['user_image']['name'][$key];
$tmp_dir = $_FILES['user_image']['tmp_name'][$key];
$imgSize = $_FILES['user_image']['size'][$key];


if(empty($username)){
    $errMSG = "Please Enter Username.";
}
else if(empty($userjob)){
    $errMSG = "Please Enter Your Job Work.";
}
else if(empty($imgFile)){
    $errMSG = "Please Select Image File.";
}
else
{
    $upload_dir = 'user_images/'; 
    $imgExt = strtolower(pathinfo($imgFile,PATHINFO_EXTENSION)); 
    $valid_extensions = array('jpeg', 'jpg', 'png', 'gif'); 
    $userpic = rand(1000,1000000).".".$imgExt;
    if(in_array($imgExt, $valid_extensions)){           
        if($imgSize < 5000000)              {
            move_uploaded_file($tmp_dir,$upload_dir.$userpic);
        }
        else{
            $errMSG = "Sorry, your file is too large.";
        }
    }
    else{
        $errMSG = "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";        
    }
}
if(!isset($errMSG))
{
    $stmt = $DB_con->prepare('INSERT INTO tbl_users(userName,userProfession,userPic) VALUES(:uname, :ujob, :upic)');
    $stmt->bindParam(':uname',$username);
    $stmt->bindParam(':ujob',$userjob);
    $stmt->bindParam(':upic',$userpic);

    if($stmt->execute())
    {
        $successMSG = "new record succesfully inserted ...";
        header("refresh:5;index.php"); 
    }
    else
    {
        $errMSG = "error while inserting....";
    }
}
}}