【问题标题】:Telerik RadAsyncUpload control - Rename multiple files names if already existTelerik RadAsyncUpload 控件 - 如果已存在,则重命名多个文件名
【发布时间】:2015-06-23 03:20:55
【问题描述】:

Telerik 的 RadAsyncUpload 控件用于将文件上传到文件系统或共享文件夹。如果文件已经存在,我们需要在文件末尾追加一个计数器值。

我已经编写了将一个名为 counter 的整数值添加到文件名的逻辑,但是如果我选择多个文件,此代码将失败:

 foreach (UploadedFile file in AsyncUpload1.UploadedFiles)
 {
     string targetFolder = AsyncUpload1.TargetFolder;
     string targetFileName = System.IO.Path.Combine(targetFolder,
         file.GetNameWithoutExtension() + counter.ToString() + file.GetExtension());

     while (System.IO.File.Exists(targetFileName))
     {
         counter++;
         targetFileName = System.IO.Path.Combine(targetFolder,
         file.GetNameWithoutExtension() + counter.ToString() + file.GetExtension());
     }
     file.SaveAs(targetFileName);
 }

如果文件共享中已存在多个文件,我想重命名它们。

【问题讨论】:

  • 您收到的错误信息是什么?
  • 还有这段代码在哪里?
  • 您有机会测试答案吗?如果是这样,我想知道它是否适合你。

标签: telerik asyncfileupload


【解决方案1】:

此答案假设您在 AsyncUpload1_FileUploaded 子例程中有此代码。我做出这个假设是因为我能够用那里的代码重新创建你的问题。

如果是这种情况,则会为每个上传的文件触发此事件。当您选择文件时,它会在 \App_Data\RadUploadTemp 中创建一个临时文件。当您设置了 TargetFolder 属性时,在AsyncUpload1_FileUploaded 触发后,该文件将被删除(如果未根据this Telerik forum 设置此属性,则不会立即删除该文件)。

您的代码正在遍历每个文件,但是当第二个文件的事件触发时,第一个文件已被删除,从而导致错误。

没有必要循环遍历每个文件,因为AsyncUpload1_FileUploaded 会为每个文件触发。删除您的 For Each 语句并声明/设置 file,如下所示:Dim file As UploadedFile = e.File

protected void AsyncUpload1_FileUploaded(object sender, FileUploadedEventArgs e)
{
    int counter = 0;
    UploadedFile file = e.File; //Replace your For Each statement with this line
    string targetFolder = AsyncUpload1.TargetFolder;
    string targetFileName = System.IO.Path.Combine(targetFolder, file.GetNameWithoutExtension() + counter.ToString() + file.GetExtension());
    while (System.IO.File.Exists(targetFileName)) {
        counter += 1;
        targetFileName = System.IO.Path.Combine(targetFolder, file.GetNameWithoutExtension() + counter.ToString() + file.GetExtension());
    }
    file.SaveAs(targetFileName);
}

【讨论】:

    猜你喜欢
    • 2020-09-17
    • 2014-07-20
    • 2012-08-20
    • 1970-01-01
    • 2015-02-02
    • 2019-07-25
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多