bootstrap fileinput,显示上传的文件并删除它们

时间:2015-08-30 07:00:11

标签: php twitter-bootstrap bootstrap-file-upload

如何使用krajee中的bootstrap-fileinput插件显示和删除以前上传的文件,我的代码是:

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,但我不知道怎么做?

2 个答案:

答案 0 :(得分:0)

由于您使用json上传文件,因此您也可以使用它来删除它们。通过发送要删除的图像URL数组,对服务器进行另一次ajax调用。然后使用PHP,你可以简单地unlink

例如: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
});

答案 1 :(得分:0)

uuuhh,fileinput脚本需要高于5.3.3的php版本,因为我的托管服务提供商的plesk面板仅支持5.3.3我有问题,因为11.5 plesk支持服务器上每个域的多个php版本,现在用PHP 5.6一切都很棒!