FileUpload多次上载1个文件

本文关键字:1个 文件 上载 FileUpload | 更新日期: 2023-09-27 18:16:04

由于某种原因,当我尝试上传多个文件时,所有文件都会成为第一个文件的副本。当我说副本时,我指的是不同的文件名,不同的文件扩展名,但所有图像都是相同的图片。

示例:

我选择了四个文件。2个png,2个jpg。所有不同的尺寸。当我上传它们时,它们显示为:

  • 1.jpg-256 kb
  • 2.jpg-256 kb
  • 3.png-256 kb
  • 4.png-256 kb

我很困惑这是什么时候发生的。Response.Write显示文件大小不同,但它们保存为同一个文件。

 foreach (HttpPostedFile file in FileUpload1.PostedFiles)
 {
    // Debugging only - I know Response.Write is bad to use
    Response.Write(file.FileName + " - " + file.ContentLength + "<br>");
    // Normally a server, set to C for debugging
    FileUpload1.SaveAs(Path.Combine("C:''Uploads"), file.FileName);
 }

输出:

 1.png - 270587
 2.png - 261286
 3.JPG - 1309586
 4.JPG - 912675

所以它知道它们是不同的文件,但它对一个文件做了四次。知道为什么吗?

FileUpload多次上载1个文件

根据MSDN,如果您正在处理多个文件,则应该使用Request.files集合来迭代它们。试试这样的东西:

 foreach (HttpPostedFile file in Request.Files)
 {
    // Debugging only - I know Response.Write is bad to use
    Response.Write(file.FileName + " - " + file.ContentLength + "<br>");
    // Normally a server, set to C for debugging
    file.SaveAs(Path.Combine("C:''Uploads"), file.FileName);
 }
FileUpload1.SaveAs(Path.Combine("C:''Uploads"), file.FileName);

不会起作用。您需要对遍历FileUpload1.PostedFiles列表的file对象进行操作。

请改用file.SaveAs(...)

看看:http://msdn.microsoft.com/en-us/library/system.web.httprequest.files(v=vs.110(.aspx获取示例/更多信息。

我认为u的意思是

file.SaveAs(Path.Combine("C:''Uploads"), file.FileName)

而不是

FileUpload1.SaveAs(Path.Combine("C:''Uploads"), file.FileName)