Я пытался понять, как сделать это несколько загрузок изображений в течение нескольких дней, и я не могу понять это. Я совершенно новичок в этом, поэтому, пожалуйста, не будьте скупы. Я проверил несколько веб-сайтов, прежде чем просить о помощи здесь.
ЭТО СТРАНИЦА С ФОРМОМ
<?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">×</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, к сожалению, мне не удалось заставить ничего работать. Лучшее, что я мог придумать, - показать две загрузки без отображения фактических изображений, поскольку они не были загружены в базу данных.
Если кто-то может мне помочь или вести меня, как я могу загружать несколько изображений, используя приведенное выше, поскольку текущее содержимое работает только для загрузки одного изображения. Заранее спасибо.
Он не работает, потому что вы установили массив файлов и делаете код с одним файлом.
Пожалуйста, исправьте код ниже:
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"];