Я проверил разные потоки при переименовании загруженных существующих имен файлов с увеличением на 1, но я не получаю правильного решения.
Это должно быть go таким образом: существующие файлы в папке: document. pdf && document.docx, недавно загруженный: document (1) .pdf && document (1) .docx
Теперь, если я загрузил одно или несколько существующих имен файлов, имя файла, сохраняемого в базе данных, будет p (1 ) .pdf && p (1) .pdf. Он не может сохранить исходное имя файла, а также игнорирует другие существующие файлы, которые я загружаю. Когда я проверил папку загрузок, там есть только один p (1) .pdf и document.docx
Не могли бы вы помочь мне понять, как заставить его работать?
PHP код:
$targetDir = '../uploads/projects/'.$projectid.'/';
$allowTypes = array('pdf','doc','docx','xlsx', 'pptx','ppt');
$statusMsg = $errorMsg = $insertValuesSQL = $errorUpload = $errorUploadType = '';
$fileNames = array_filter($_FILES['files']['name']);
if(!empty($fileNames))
{
foreach($_FILES['files']['name'] as $key=>$val)
{
// File upload path
$fileName = basename($_FILES['files']['name'][$key]);
$targetFilePath = $targetDir . $fileName;
// Check whether file type is valid
$fileType = pathinfo($targetFilePath, PATHINFO_EXTENSION);
$uploaded_filename = $fileType['filename'];
$count=1;
if(in_array($fileType, $allowTypes))
{
while(file_exists($targetFilePath))
{
$info=pathinfo($targetFilePath);
$targetFilePath=$info['dirname'].'/' .$uploaded_filename . '(' .$count. ')'. '.' .$info['extension'];
$new_filename=$uploaded_filename . '(' .$count. ')'. '.' .$info['extension'];
$count++;
$file_return=1;
}
// Upload file to server
if(move_uploaded_file($_FILES["files"]["tmp_name"][$key], $targetFilePath))
{
// File db insert sql
if($file_return==1)
{
$insertValuesSQL .= "('".$projectid."', '".$new_filename."', '".$new_filename."','".$userid."','".$today."'),";
}
else
{
$insertValuesSQL .= "('".$projectid."', '".$fileName."', '".$fileName."','".$userid."','".$today."'),";
}
}
else
{
$errorUpload .= $_FILES['files']['name'][$key].' | ';
}
}
else
{
$errorUploadType .= $_FILES['files']['name'][$key].' | ';
}
}
if(!empty($insertValuesSQL))
{
$insertValuesSQL = trim($insertValuesSQL, ',');
// Insert file name into database
$insert = $conn->query("INSERT INTO project_documents (projectid, filename, attachment, uploadedby, dateuploaded) VALUES $insertValuesSQL");
if($insert)
{
$errorUpload = !empty($errorUpload)?'Upload Error: '.trim($errorUpload, ' | '):'';
$errorUploadType = !empty($errorUploadType)?'File Type Error: '.trim($errorUploadType, ' | '):'';
$errorMsg = !empty($errorUpload)?'<br/>'.$errorUpload.'<br/>'.$errorUploadType:'<br/>'.$errorUploadType;
$statusMsg = "Files are uploaded successfully.".$errorMsg;
}
else
{
$statusMsg = "Sorry, there was an error uploading your file.";
}
}
}
else
{
$statusMsg = 'Please select a file to upload.';
}
// Display success message
header("Location: ../filemanagement.php?st=success");
Спасибо.