FileUpload多次上传1个文件

时间:2014-07-31 21:29:34

标签: c# asp.net

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

示例:

我选择了四个文件。 2 png,2 jpg's。各种尺寸。当我上传它们时,它们会像这样出现:

  • 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

因此它知道它们是不同的文件,但它会执行四次文件。知道为什么吗?

3 个答案:

答案 0 :(得分:3)

根据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);
 }

答案 1 :(得分:1)

我想你的意思是

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

而不是

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

答案 2 :(得分:1)

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

没有工作。您需要对遍历file列表的FileUpload1.PostedFiles对象进行操作。

改为使用file.SaveAs(...)

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