【问题标题】:multiple images upload to database using a function使用函数将多个图像上传到数据库
【发布时间】:2018-06-26 23:09:07
【问题描述】:

几天来,我一直在尝试了解如何执行此多张图片上传操作,但我无法弄清楚。我对此很陌生,所以请不要吝啬。在真正在这里寻求帮助之前,我检查了几个网站。

这是带有表格的页面

<?php
require_once("photoalbum-common.php");
require_once "lib/dbutils.php";
?>

<!DOCTYPE html>
<html>
<head>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
    <link rel='stylesheet' href='CSS/actors-styles.css'>
    <link rel='stylesheet' href='http://www.w3schools.com/lib/w3.css'>
</head>
<body>
<?php
$pdo = connect();
if ( isset( $_POST['formid']) && $_POST['formid'] == 'fileupload') {
$photoid = addPhotograph( $pdo, $_POST['name'], $_POST['description'], 'self', $_FILES['images']);

    }

?>

<div class='w3-container w3-center'>

<button onclick="document.getElementById('id01').style.display='block'" class="link">Add images</button>
</div>

<div id="id01" class="w3-modal w3-animate-opacity">
  <div class="w3-modal-dialog">
    <div class="w3-modal-content w3-card-4 w3-animate-zoom">
      <header class="w3-container w3-teal"> 
        <a href="" class="w3-closebtn">&times;</a>

        <h2>Upload photograph</h2>
      </header>
      <div class="w3-container">
        <form action='?' method='post' enctype='multipart/form-data' id='photoform' class='w3-container'>
          <div class="w3-group">
<!--            <input type='file' name='uploadfile' class='w3-input'> -->
            <label class="w3-label">Image file</label>
        <input type="file" name="images[]" multiple class='w3-input'/>

          </div>
          <div class="w3-group"> 
            <label class="w3-label">Name</label>  
            <input type='text' name='name' class='w3-input' required>

          </div>
          <div class="w3-group">  
            <label class="w3-label">Description</label> 
            <textarea name='description' class='w3-input' required></textarea>

          </div>
          <input type='hidden' name='formid' value='fileupload'>
          <input type='submit' value='Upload' id='uploadbutton' class='w3-btn'>
        </form>
      </div>
      <footer class="w3-container w3-teal">
        <p></p>
      </footer>
    </div>
  </div>
</div>


</body>
</html>

这是 photoalbum-common.php 中的功能

 function addPhotograph( $pdo, $name, $description, $user, $fileinfo) {
  $stmt = $pdo->prepare("INSERT INTO photographs ( `name`, `description`, `user`) VALUES (?, ?, ?)");
  $stmt->execute( array( $name, $description, $user));
  $photoid = $pdo->lastInsertId();

  $tmp_name = $fileinfo["tmp_name"];
  $name = $photoid."_".$fileinfo["name"];
  $stmt = $pdo->prepare("UPDATE photographs SET `image`=? WHERE `photoid`=?");
  $stmt->execute( array( $name, $photoid));
  $result = move_uploaded_file($tmp_name, "images/$name");
  return $photoid;  
}



function reArrayFiles(&$file_post) {

    $file_ary = array();
    $file_count = count($file_post['name']);
    $file_keys = array_keys($file_post);

    for ($i=0; $i<$file_count; $i++) {
        foreach ($file_keys as $key) {
            $file_ary[$i][$key] = $file_post[$key][$i];
        }
    }

    return $file_ary;
}

我从http://php.net/manual/en/features.file-upload.multiple.php 获得的第二个功能,不幸的是,我没有设法使任何工作。我能想到的最好的办法是显示两个上传,但没有显示实际图像,因为它们没有上传到数据库中。

如果有人可以帮助我或指导我如何使用上述内容上传多张图片,因为当前内容仅适用于一张图片上传。提前谢谢你。

【问题讨论】:

    标签: php mysql forms pdo phpmyadmin


    【解决方案1】:

    它不起作用,因为您设置了文件数组并使用单个文件执行代码。

    请用下面的代码改正:

    if(!empty($fileinfo)){
        $total_files = count($fileinfo['name']);        
        for($i = 0 ; $i<$total_files ; $i++)
        {
            $tmp_name = $fileinfo["tmp_name"][$i];
            $name = rand()."_".$fileinfo["name"][$i];
            $result = move_uploaded_file($tmp_name, "images/$name");
        }
    }
    $tmp_name = $fileinfo["tmp_name"];
    

    【讨论】:

    • 尝试在 addphotograph 函数中使用您的代码,但它仍然只上传一张图像。
    猜你喜欢
    • 1970-01-01
    • 2015-01-01
    • 2011-08-14
    • 1970-01-01
    • 2011-04-21
    • 2015-09-18
    • 2019-04-21
    • 1970-01-01
    • 2016-08-28
    相关资源
    最近更新 更多