检查目录中是否存在文件名,并在完成上载之前重命名?

时间:2013-11-19 03:33:59

标签: asp.net vb.net file file-upload arraylist

我正在创建一个允许用户将图像上传到我网站服务器的应用程序。但是我希望允许用户通过重命名新文件来上传多个具有相同名称的文件。 但我不知道用什么方法来执行此检查。

我正在考虑尝试将所有文​​件名单独放入arraylist并创建一个循环来检查其余的新文件名,如果有匹配则我会随机生成一串字母标记到新的文件名。

但是我还没有弄清楚如何填充arraylist,这是我检查重复攻击arraylist的代码:

Dim i As Integer = 0
For i = 0 To arrayFileNames.Count
    If (fileName = arrayFileNames(i)) Then
        Dim random As Random = New Random()
        random.Next(1, 100000)
        fileName = fileName & random.ToString
    End If
    i = i + 1
Next

但是这段代码会抛出以下错误:

  

指数超出范围。必须是非负数且小于集合的大小。   参数名称:index

任何帮助将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:1)

如果您正在创建For循环,则无需手动增加计数器。删除行i = i + 1

Dim i As Integer = 0
For i = 0 To arrayFileNames.Count
    If (fileName = arrayFileNames(i)) Then
        Dim random As Random = New Random()
        random.Next(1, 100000)
        fileName = fileName & random.ToString
    End If
Next

答案 1 :(得分:0)

  • for循环已经开始增加i。
  • 如果您获得的新fileName等于之前的索引,则会出现问题。
  • 当您创建一个新的随机实例时,您将获得相同的值。
  • random.ToString()不会返回您的想法(检查输出)。
  • 如果你继续添加一个大数字,你可能会得到一个非常大的文件名。

你必须改变你的逻辑(我没有测试过这段代码,这是一个帮助你的例子。)

Dim random As Random = New Random()

Do While arrayFileNames.Contains(fileName)
    fileName = fileName & random.Next(1, 9).ToString
Loop