无法在多个文件上传系统中上传具有相同名称的文件

Posted

技术标签:

【中文标题】无法在多个文件上传系统中上传具有相同名称的文件【英文标题】:Not able to upload files having same name in multiple file upload system 【发布时间】:2018-09-28 07:13:40 【问题描述】:

我有一个代码参考from this site,它允许我上传多个文件并针对每次上传显示加载程序。视图是这样的

整个过程的流程是用户点击“选择文件”,可以在1个选项中选择多个文件,然后点击“上传按钮”文件被上传。 另一个在这里工作的流程是,点击“选择文件”,用户可以选择第一个文件,然后再次点击“选择文件”,他可以选择第二个文件,依此类推..最后他可以点击上传按钮并将所有文件一起上传

如果我尝试上传 2 个同名文件,就会出现问题。

在服务器文件夹中保存时,我更改了文件名。但是在上传之前,如果有2个同名文件则不上传,否则重新上传整组文件

代码有多个文件,在这里给出部分代码不会给出任何明确性,所以我只给出我添加的一部分代码以更改后端文件的名称,但真的如果您能从here 下载代码并帮助我解决这个问题,将不胜感激

添加代码以更改后端上传文件的名称(下载文件夹中的upload.php文件)

function random_number($maxlength = 17) 
     
        $chary = array("a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o","p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z","0", "1", "2", "3", "4", "5", "6", "7", "8", "9","A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"); 
        $return_str = ""; 
        for ( $x=0; $x<=$maxlength; $x++ ) 
             
                $return_str .= $chary[rand(0, count($chary)-1)]; 
             
        return $return_str; 
     

    $random=random_number(); 
    $file_name = strip_tags($_FILES['upload_file']['name']); //File Name 
    $vpb_file_name = $random.$file_name;

谁能告诉我如何在上传到后端之前更改文件的名称

负责上传的脚本is here

【问题讨论】:

您可以在保存文件时添加当前日期时间和文件名。 @kalai 我试过这样做,但上传功能停止工作 我不是 php 开发者,c# 本身我们可以做同样的事情,那么只有我可以提出这个想法 您能否在尝试@kalai 给出的建议后编辑您的答案只需要看看您如何存储包含当前时间戳的名称 我在 c# 端 @Developer107 中做到这一点 【参考方案1】:
 <input class="uploadGAConnection" #uploadFile  type="file" (change)="uploadGAConnectionDetails($event)" placeholder="Upload file" accept=".csv,.json" (click)="uploadFile.value=null">

只需在每次点击时提供一个引用并将其值设置为 null。

【讨论】:

【参考方案2】:

新建文件名如下

$shortname =time().'-'.$_FILES['newsImage']['name'];

$shortname=str_replace(" ","_",basename(trim($shortname)));

$vpb_file_name=$shortname;

【讨论】:

【参考方案3】:

由于我们也面临同样的问题,但我们知道问题出在服务器端,同时将其保存到目的地,但您可以临时重命名将要上传的文件,如

var file = $('#select-image-file').get(0).files[0];
var newFileName = 'Some_unique_number'+file.filename;
var formData = new FormData();
formData.append('file', file, newFileName);

然后提交表单数据,以便在上传之前每个文件始终有唯一的名称,服务器将毫无问题地保存文件。

【讨论】:

以上是关于无法在多个文件上传系统中上传具有相同名称的文件的主要内容,如果未能解决你的问题,请参考以下文章

无法将文件从 React 上传到具有多个对象的 .net Core 5

PHP上传和覆盖照片文件

如何防止在laravel中上传相同的文件

唯一标识名称和大小相同但内容不同的文件

Java - 日文文件名乱码

在 Codeigniter 中上传多个文件并更改名称文件