如果使用 kendoupload 存在,如何重命名文件?

Posted

技术标签:

【中文标题】如果使用 kendoupload 存在,如何重命名文件?【英文标题】:How to rename file if exist using kendoupload? 【发布时间】:2021-05-09 09:04:59 【问题描述】:

我正在使用 KendoUI Jquery、MVC 的 ChunkUpload,我想我需要在文件进入控制器(ChunkSave)之前重命名文件,但我不知道我能够做到这一点。

我的块上传参考:https://demos.telerik.com/kendo-ui/upload/chunkupload?_ga=2.247157956.1737132689.1612402138-1671290078.1573535372

这是我的脚本

$(".fUploadSingle").kendoUpload(
            async: 
                chunkSize: 10000000, 
                saveUrl: '@Url.Action("ChunkSave", "Streaming", new  area = "" )',
                removeUrl: "remove",
                autoUpload: true                  
            
        );

控制器:

 public ActionResult ChunkSave(IEnumerable<HttpPostedFileBase> files, string metaData)
    
        if (metaData == null)
        
            return Save(files);
        

        MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(metaData));
        var serializer = new DataContractJsonSerializer(typeof(ChunkMetaData));
        ChunkMetaData somemetaData = serializer.ReadObject(ms) as ChunkMetaData;
        string path = String.Empty;
        // The Name of the Upload component is "files"
        if (files != null)
        
            foreach (var file in files)
            
                path = Path.Combine(Server.MapPath("~/Videos/Materials"), somemetaData.FileName);

                AppendToFile(path, file.InputStream);
            
        

        FileResult fileBlob = new FileResult();
        fileBlob.uploaded = somemetaData.TotalChunks - 1 <= somemetaData.ChunkIndex;
        fileBlob.fileUid = somemetaData.UploadUid;


        return Json(fileBlob);
    

【问题讨论】:

这可能会有所帮助telerik.com/forums/prevent-selecting-files-with-same-filename 你只需要使用 select 事件并迭代你的文件名 (var filename = selected[i].name;) 【参考方案1】:

由于您拥有autoUpload: true,因此您无法在前端捕获重复的文件名。后端必须处理这种情况。后端可以用不同的文件名保存它(例如filename (1).doc)。

如果您设置了autoUpload: false,您可以通过实现select 事件来捕获重复的文件名。

【讨论】:

以上是关于如果使用 kendoupload 存在,如何重命名文件?的主要内容,如果未能解决你的问题,请参考以下文章

redis键重命名

php检查文件名是不是存在,重命名文件

在工作区中查找和重命名变量(如果存在任何名称)

如果文件已经存在,ffmpeg 重命名输出

使用 Java 重命名文件

Linux 重命名文件