У меня две проблемы с Начальная загрузка FileInput плагин:
Я загружаю в папку «temp» файлы для парковки до отправки формы, и я получаю уникальный ключ, с которым я могу связать вложение и данные формы. Теперь проблема в том, что в случае, если пользователь хочет удалить загруженный файл с помощью собственного значка «мусор», загруженный файл остается в папке «temp», поскольку функция удаления не определена. Как настроить кнопку «Удалить вложение» и указать ее вложение в папке «temp»?
У меня есть одна веб-страница с 2 вкладками, каждая вкладка содержит форму для заполнения пользователем. Мне нужна каждая форма для отображения плагина fileinput, но после дублирования кода (даже если поля ввода имеют разные имена), только первое поле fileinput работает корректно, второе вообще не загружает файлы. Как я могу иметь несколько экземпляров плагина на одной веб-странице?
Поле ввода + JS:
<h4>Attachments</h4>
<div class="col-md-12">
<input tabindex="19" id="input" name="input[]" type="file" multiple class="file-loading">
<p class="help-block">Max. filesize 5MB, images only (.jpg || .png || .bmp)</p>
<script>
var $input = $("#input");
$input.fileinput({
uploadUrl: "./attachments/upload.php", // server upload action
uploadExtraData: {log:'auto',holidex:'<?php echo $_SESSION['Holidex']; ?>',user:'<?php echo $_SESSION['myusername']; ?>'},
uploadAsync: false,
showUpload: false, // hide upload button
showRemove: false, // hide remove button
maxFileCount: 10,
'maxFileSize': 5120,
allowedFileTypes: ["image", "video"]
}).on("filebatchselected", function(event, files) {
// trigger upload method immediately after files are selected
$input.fileinput("upload");
});
</script>
</div>
upload.php
<?php
session_start();
if(isset($_FILES['input'])) {
// define variables
$holidex = $_POST['holidex'];
$user = $_POST['user'];
$output_dir = "./".$holidex."/temp/".$user."/";
// check whether temporary folder exists, otherwise create
if (!file_exists($output_dir)) {
mkdir($output_dir, 0755, true);
}
$ret = array();
// This is for custom errors;
/* $custom_error= array();
$custom_error['jquery-upload-file-error']="File already exists";
echo json_encode($custom_error);
die();
*/
$error = $_FILES["input"]["error"];
//You need to handle both cases
//If Any browser does not support serializing of multiple files using FormData()
if(!is_array($_FILES["input"]["name"])) //single file
{
$fileName = $_FILES["input"]["name"];
move_uploaded_file($_FILES["input"]["tmp_name"],$output_dir.$fileName);
$ret[]= $fileName;
}
else //Multiple files, file[]
{
$fileCount = count($_FILES["input"]["name"]);
for($i=0; $i < $fileCount; $i++)
{
$fileName = $_FILES["input"]["name"][$i];
move_uploaded_file($_FILES["input"]["tmp_name"][$i],$output_dir.$fileName);
$ret[]= $fileName;
}
}
echo json_encode($ret);
} else { echo "No data received."; }
?>
Задача ещё не решена.
Других решений пока нет …