代码之家  ›  专栏  ›  技术社区  ›  Mark Kadlec

MVC中的多文件上传关联

  •  0
  • Mark Kadlec  · 技术社区  · 14 年前

    excellent post )

    我该怎么做?例如,如果问题#3上载了一个文件abc.pdf,我如何将该文件与ID#3关联?

    有什么好主意,或者以前有人做过吗?

    2 回复  |  直到 11 年前
        1
  •  1
  •   Kyra    14 年前

    this site 告诉您如何对数组进行排序,这是我们不需要的,但它还显示了如何生成结构数组。因此,如果您只想保存文件名,那么您只需要一个字符串数组。但是如果需要保存名称和其他内容,则创建结构数组。

    Private  Structure FileInfo
        Public Name As String
        Public OtherInfo As String
    End Structure
    

    Dim FileInfoArray(NumOfPotentialUploadedFiles - 1) As FileInfo
    

    因为听起来每个输入字段都上载一个文件,所以您只需记住字段的id号,然后您就可以轻松地“知道上载的文件与哪些id关联”,就好像字段1有一个上载的文件,那么它将在数组中的同一位置。您可以在第一次创建数组时设置为false的结构中创建布尔值。然后当你上传一个索引为1的文件时,你把布尔值改为真。这样,当您通过数组b/c时,您很容易知道您有哪些文件,只有具有真值的位置才有一个文件。

        2
  •  0
  •   Mark Kadlec    14 年前

    好吧,想出一个简单的解决办法。因为Request.Files[x]对象没有对字段的任何引用,所以我一直在挣扎,但是Request.Files(HttpFileCollectionWrapper)有一个AllKeys属性来保存字段数组。我现在的代码是:

       for (int fileIndex = 0; fileIndex < Request.Files.Count; fileIndex++)
       {
              string fieldName = Request.Files.AllKeys[fileIndex];   <---  Here is where you can gleam an key to persist to the database, I have an ID in the fieldName
              string savedFileName = Path.GetFileName(Request.Files[fileIndex].FileName);
              var path = Path.Combine(<your server save path>, savedFileName);
              Request.Files[fileIndex].SaveAs(path);
        }
    

    够简单的!