PHP Загрузка нескольких файлов: невозможно получить исходное имя файла, когда файл существует, и другие файлы игнорируются. - PullRequest
0 голосов
/ 08 мая 2020

Я проверил разные потоки при переименовании загруженных существующих имен файлов с увеличением на 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");

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...