Привет, У меня есть файл и контроллер для просмотра, что делает несколько входов, где я могу загружать файлы в папку, но загружая только один файл в папку. Я знаю, в чем проблема, но я не знаю, как это исправить или как это сделать.Несколько файлов в папке
Мой контроллер:
public function uploadFile() {
$filename = '';
if ($this->request->is('post')) { // checks for the post values
$uploadData = $this->data['files'];
//print_r($this->data['files']); die;
if ($uploadData['size'] == 0 || $uploadData['error'] !== 0) { // checks for the errors and size of the uploaded file
echo "Failide maht kokku ei tohi olla üle 5MB";
return false;
}
$filename = basename($uploadData['name']); // gets the base name of the uploaded file
$uploadFolder = WWW_ROOT. 'files'; // path where the uploaded file has to be saved
$filename = $filename; // adding time stamp for the uploaded image for uniqueness
$uploadPath = $uploadFolder . DS . $filename;
if(!file_exists($uploadFolder)){
mkdir($uploadFolder); // creates folder if not found
}
if (!move_uploaded_file($uploadData['tmp_name'], $uploadPath)) {
return false;
}
echo "Sa sisestasid faili(d): $filename";
}
}
Мой Просмотр файла:
<?php
echo $this->Form->create('uploadFile', array('type' => 'file'));
?>
<div class="input_fields_wrap">
<label for="uploadFilefiles"></label>
<input type="file" name="data[files]" id="uploadFilefiles">
</div>
<button type="button" class="add_field_button">+</button> <br><br>
<form name="frm1" method="post" onsubmit="return greeting()">
<input type="submit" value="Submit">
</form>
<?php
echo $this->Html->script('addFile');
И это сценарий, что Im используя в Вид:
$(document).ready(function() {
var max_fields = 3;
var wrapper = $(".input_fields_wrap");
var add_button = $(".add_field_button");
var x = 1;
$(add_button).click(function(e){
e.preventDefault();
if(x < max_fields){
x++;
$(wrapper).append("<div><input type='file' name='data[files]' id='uploadFilefiles'/><a href='#' class='remove_field'>Kustuta</a></div>");
}
});
$(wrapper).on("click",".remove_field", function(e){ //user click on remove text
e.preventDefault(); $(this).parent('div').remove(); x--;
})
});
Я думаю, что проблема заключается в именах ввода. Если Im делает больше входных данных, то имена входов одинаковы, и благодаря этому он загружает только один файл в папку webroot/files, но я хочу все это.
Может кто-нибудь помочь мне или дать мне несколько советов. Спасибо!
имя = 'данные [файлы] [] – violator667
Да Я знаю, что мне нужно сделать что-то вроде этого, но если я просто добавлю [] для просмотра и создания скрипта, сделав то же самое, загрузив только один файл. – hammasta
Он создает массив, вы должны перебирать массив и размещать функцию загрузки внутри цикла. Проверьте мой ответ ниже. –