У меня возникли проблемы при загрузке нескольких файлов. У меня есть раскрывающаяся категория и поле комментариев, которое мне нужно вставить в базу данных вместе с файловой информацией. У меня есть пять загрузочных ящиков, отображаемых на экране.Включая комментарии для загрузки нескольких файлов
Если я загружаю один файл, комментарий пуст (даже если это не будет), а категория всегда устанавливается на первое значение. Немного проверяя, похоже, что финальные комментарии к загрузке и боксы категории перезаписывают все пропуски. Протестировано, загрузив пять файлов с различными категориями и комментариями, все показали последний комментарий и категорию.
Я вижу проблему в скрипте, но я не могу понять, как назначить категорию или комментарий для каждого конкретного экземпляра загрузки.
Любая помощь приветствуется.
<?php
$upload_dir = "training/trainingDocuments/";
$maxUploads = 5;
$msg = "Please select file(s) for uploading";
$errors = array();
if ($files = convert_files($_FILES["myTrainingFile"])) {
foreach($files as $i => $file) {
$fileName = $file["name"];
$tempName = $file["tmp_name"];
$fileSize = $file["size"];
$fileExt = strtolower(pathinfo($fileName, PATHINFO_EXTENSION));
$blacklist = array('exe','php','jsp','js','bat','asp','aspx','com','dmg');
// $newPath = $upload_dir .$fileName;
$dateUploaded = time() . microtime();
if (in_array($fileExt, $blacklist)) {
$errors[$i] = "File type not allowed";
}
if (!is_uploaded_file($tempName)) {
//$errors[$i] = "Uploading ".$fileName." failed.";
}else{
echo '<h4>Uploading of :'.$fileName.' was a success.</h4>';
}
//if(file_exists($newPath)){
$name = pathinfo($fileName, PATHINFO_FILENAME);
$fileName = $name . '__' .uniqid(). '.' .$fileExt;
$newPath = $upload_dir .$fileName;
// }else{
//
// }
if (isset($errors[$i])) {
continue;
}
if (!move_uploaded_file($tempName, $newPath)) {
//$errors[$i] = "Uploading ".$fileName." failed.";
}else{
//echo 'File moved';
}
$comments = htmlentities(trim($_POST['comments']));
$category = htmlentities(trim($_POST['category']));
if($file['name'] != ""){
$training->uploadDocument($fileName, $category, $comments);
}
}
}
?>
<?php
function convert_files($files) {
if (is_array($files) && !empty($files["name"])) {
if (is_array($files["name"])) {
$merged = array();
foreach($files["name"] as $i => $name) {
$merged[] = array(
"name" => $name,
"type" => $files["type"][$i],
"size" => $files["size"][$i],
"error" => $files["error"][$i],
"tmp_name" => $files["tmp_name"][$i]
);
}
return $merged;
}
return array($files);
}
return false;
}
?>
EDIT: ДОБАВЛЕНО HTML
<div id="uploadFormContainer">
<form id="uploadForm" action="<?php echo htmlentities($_SERVER['PHP_SELF']);?>" method="post" enctype="multipart/form-data">
<?php
$num = 0;
while($num < $maxUploads)
{?>
<div class="uploadFormE">
<label>File Category: </label>
<select name="category">
<option value="doc">Documents (pages, word, PDF etc)</option>
<option value="sheet">Spreadsheet</option>
<option value="vid">Video</option>
<option value="pres">Presentations</option>
<option value="img">Image</option>
<option value="quiz">Quiz</option>
<option value="other">Other</option>
</select>
</div>
<div class="uploadFormE">
<label>File Location: </label>
<input type="file" name="myTrainingFile[]" />
</div>
<div class="uploadFormE">
<label>Comments: </label>
<textarea class="GAH" name="comments"> </textarea>
</div>
<hr/>
<br />
<?php $num++;
}
?>
<input type="submit" value="Upload File(s)">
</form>
</div>
Вам нужны комментарии и категории для каждого загруженного файла? – Maximus2012
@ Maximus2012 - Идеально да.Ну, категория является абсолютной необходимостью, комментарии не являются огромным испытанием, но хотелось бы – null