php переименовать загруженный файл перед загрузкой и перезаписать, если он уже существует - PullRequest
0 голосов
/ 22 марта 2020

В настоящее время использую этот код для загрузки (но с удовольствием использую любой, если предложено) ..

<form style="margin-bottom:2px;" method="post" enctype="multipart/form-data" name="formUploadFile">     
            <label>Select CSV file to upload:</label>
            <input type="file" name="files[]" multiple="multiple" /> <input type="submit" value="Upload CSV" name="btnSubmit"/>
        </form> 

        <?php
            if(isset($_POST["btnSubmit"]))
            {
                $errors = array();
                $uploadedFiles = array();
                $extension = array("csv");
                $bytes = 1024;
                $KB = 1024;
                $totalBytes = $bytes * $KB;
                $UploadFolder = "tmp_csv_store";

                $counter = 0;

                foreach($_FILES["files"]["tmp_name"] as $key=>$tmp_name){
                    $temp = $_FILES["files"]["tmp_name"][$key];
                    $name = $_FILES["files"]["name"][$key];

                    if(empty($temp))
                    {
                        break;
                    }

                    $counter++;
                    $UploadOk = true;

                    if($_FILES["files"]["size"][$key] > $totalBytes)
                    {
                        $UploadOk = false;
                        array_push($errors, $name." file size is larger than the 1 MB.");
                    }

                    $ext = pathinfo($name, PATHINFO_EXTENSION);
                    if(in_array($ext, $extension) == false){
                        $UploadOk = false;
                        array_push($errors, $name." invalid file type.");
                    }

                    if(file_exists($UploadFolder."/".$name) == true){
                        $UploadOk = false;
                        array_push($errors, $name." file already exists.");
                    }

                    if($UploadOk == true){
                        move_uploaded_file($temp,$UploadFolder."/".$name);
                        array_push($uploadedFiles, $name);
                    }

                }

                if($counter>0){
                    if(count($errors)>0)
                    {
                        echo "<b>Errors:</b>";
                        foreach($errors as $error)
                        {
                            echo " ".$error.",";
                        }
                        echo "<br/>";
                    }

                    if(count($uploadedFiles)>0){
                        echo "<b>Uploaded:</b>";
                        echo "=";
                        foreach($uploadedFiles as $fileName)
                        {
                            echo " ".$fileName.",";
                        }
                        echo "<br/>";

                        echo "<big><big>".count($uploadedFiles)." file has been successfully uploaded.</big></big>";
                                            }                                           
                }
                else{
                    echo "ERROR: Please press the browse button and select a CSV file to upload.";
                }

            }
        ?>

И хотел бы изменить его так, чтобы он переименовывал загруженный файл из «any-file-name» .csv "to" foobar.csv "перед загрузкой файла, и он также должен перезаписать файл, если он уже существует.

В качестве бонуса код в настоящее время допускает загрузку нескольких файлов, но мне это действительно нужно только для одного файла каждый раз, так что он также может быть немного сокращен, если его изменить, чтобы разрешить только один файл.

Заранее спасибо: -)

1 Ответ

1 голос
/ 22 марта 2020

Чтобы добавить собственное имя:

if($UploadOk == true){  
    $name = "foobar.csv";
    move_uploaded_file($temp,$UploadFolder."/".$name);
    array_push($uploadedFiles, $name);
}

Для одного файла удалите multiple="multiple":

<input type="file" name="files[]" />

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