Я пытаюсь загрузить несколько изображений в папку на моем веб-сайте. Хотя загрузка файла работает без проблем, я пытаюсь интегрировать создание эскиза для всех изображений, загруженных в одну и ту же функцию, которая не работает.
Форма HTML:
<form class="navbar-form pull-left" action="fileupload.php" name="fileupload" method="post" enctype="multipart/form-data">
<label for="file" style="cursor: pointer;padding:5px 0 0 0;font-weight:normal" title="Add Images">IMAGES</label>
<input type="file" name="file[]" multiple id="file"><br>
</form>
Javascript:
function _id(e) {return document.getElementById(e)}
_id('file').onchange = function() {
var theFile = this.files;
if(theFile.length === 1) {
var uploader = new XMLHttpRequest();
var file = new FormData();
file.append("file", theFile[0]);
uploader.onreadystatechange = function() {
if(uploader.readyState === 4 && uploader.status === 200) {
show_message('Uploading Image');
console.log(uploader.responseText);
}
}
uploader.open('POST','fileupload.php',true);
uploader.send(file);
} else {
var start = 0,
setter,
buff = true;
setter = setInterval(function() {
if (buff === true) {
show_message('Uploading Images');
buff = false;
var uploader = new XMLHttpRequest();
var file = new FormData();
file.append('file', theFile[start]);
uploader.onreadystatechange = function() {
if(uploader.readyState === 4 && uploader.status === 200) {
console.log(uploader.responseText);
start++;
buff = true;
}
}
uploader.open('POST','fileupload.php',true);
uploader.send(file);
}
if(start >= theFile.length) {
clearInterval(setter);
}
}, 200)
}
}
fileupload.php
<?php
session_start();
$database = $_SESSION['folder'];
$match = $_SESSION['matchLst'];
$tardir = "/var/www/html/projects/" . $database . "/" . $match . "/";
$thumb = $match . "_thumb/";
$thumbdir = $tardir . $thumb;
function createThumbnail($filename) {
if($filename) {
$im = imagecreatefromjpeg($tardir . $filename);
}
$x = imagesx($im);
$y = imagesy($im);
$nx = 100;
$ny = 100;
$nm = imagecreatetruecolor($nx, $ny);
imagecopyresized($nm, $im, 0, 0, 0, 0, $nx, $ny, $x, $y);
if(!file_exists($thumbdir)) {
if(mkdir($thumbdir)) {
imagejpeg($nm, $thumbdir . $filename);
} else {
die("Thumbnail directory could not be created");
}
} else {
imagejpeg($nm, $thumbdir . $filename);
}
}
if(!isset($_FILES['file'])){die();}
if(isset($_FILES['file'])) {
if($_FILES['file']['name']) {
$filename = $_FILES['file']['name'];
$source = $_FILES['file']['tmp_name'];
$target = $tardir . $filename;
move_uploaded_file($source, $target);
createThumbnail($filename);
echo "Images uploaded";
}
}
?>
У меня 2-3 проблемы:
В файле fileupload.php, если я закомментирую createThumbnail($filename)
, я могу загрузить несколько файлов без проблем. Когда я включаю функцию createThumbnail, ни загрузка файла, ни создание эскиза не происходит. Я пробовал различные примеры, приведенные здесь, и git, однако не смог ни создать ни миниатюру, ни сохранить ее в папке.