Как я могу показать и удалить ранее загруженные файлы с помощью отличного плагина bootstrap-fileinput из krajee, мой код:
HTML:
<script>
$("#images").fileinput({
uploadAsync: true,
uploadUrl: "upload.php"}).on("filebatchselected", function(event, files) {
$("#images").fileinput("upload");
});
</script>
upload.php:
<?php
if (empty($_FILES['images'])) {
echo json_encode(['error'=>'No files found for upload.']);
return;
}
$images = $_FILES['images'];
$success = null;
$paths= [];
$filenames = $images['name'];
for($i=0; $i < count($filenames); $i++){
$ext = explode('.', basename($filenames[$i]));
$target = "uploads" . DIRECTORY_SEPARATOR . basename($filenames[$i]);
if(move_uploaded_file($images['tmp_name'][$i], $target)) {
$success = true;
$paths[] = $target;
} else {
$success = false;
break;
}
}
if ($success === true) {
$output = ['uploaded' => $paths];
} elseif ($success === false) {
$output = ['error'=>'Error while uploading images. Contact the system administrator'];
foreach ($paths as $file) {
unlink($file);
}
} else {
$output = ['error'=>'No files were processed.'];
}
echo json_encode($output);
?>
У кого-нибудь есть идея? я думаю, что мне нужно отсканировать каталог загрузок и отправить его обратно с помощью json или использовать $ output, но я не знаю, как это сделать?
Так как вы используете json
чтобы загрузить файлы, вы можете использовать его, чтобы удалить их тоже. Сделать другой ajax
позвоните на сервер, отправив массив URL-адресов изображений, которые вы хотите удалить. Тогда с PHP вы можете просто разъединить их.
Так, например: http://jsfiddle.net/fdzsLa0k/1/
var paths = []; // A place to store all the URLs
// Loop through all images
// You can do it for a single image by using an id selector and skipping the looping part
$('.uploaded-img').each(function(i, v) {
paths.push(this.src); // Save found image paths
})
console.log(paths); // Preview the selection in console
// Send the URLs to the server for deletion
$.ajax({
method: 'post',
data: { images: paths },
url: 'ajax.php' // Replace with your ajax-processing file
}).success(function(response) {
console.log(response); // Do fun stuff: notify user, remove images from the loaded HTML
});
ууууу, скрипту fileinput нужна версия php выше 5.3.3, потому что панель plesk моего хостинг-провайдера поддерживает только 5.3.3 У меня проблемы, поскольку 11.5 plesk поддерживает несколько версий php для каждого домена на сервере, теперь с php 5.6 все отлично работает!