我已经在很多网站上看到过这种风格的演示,作为在asp.net上传多个文件的一种方式,但我无法让它工作。如果我选择6个文件,它最终只保存一个文件,但标签显示6个同名文件名。当我调试时,它会像我希望的那样在每个循环上显示每个文件名。为什么不起作用?
另外,如果重要的话,我在页面上有一个更新面板。
我正在使用启用了多个上传的asp.net上传控件。我知道路径是正确的,因为当我只上传一个文件时它非常完美。
string Path = Request.Url.AbsolutePath;
string ProperPath = Path.Replace(@"Pages/InsertVideo.aspx", @"TrainingMaterial/Video/");
if (FileUpload1.HasFiles) {
//SaveFile(FileUpload1.PostedFile);
foreach (HttpPostedFile File in FileUpload1.PostedFiles)
{
FileUpload1.SaveAs(System.IO.Path.Combine(Server.MapPath(ProperPath), FileUpload1.FileName));
lblFilesUploaded1.Text += String.Format("{0}<br />", FileUpload1.FileName);
}
}
我也尝试过这种技术,结果与上述相同。有什么建议?我认为它与我的SaveAs字符串有关。
foreach (string key in Request.Files)
{
HttpPostedFile file = Request.Files[key];
if (file.ContentLength != 0)
{
file.SaveAs(System.IO.Path.Combine(Server.MapPath(ProperPath), FileUpload1.FileName));
}
}
答案 0 :(得分:4)
这应该可以解决问题:
if (FileUpload1.HasFiles)
{
foreach (var file in FileUpload1.PostedFiles)
{
file.SaveAs(Path.Combine(Server.MapPath(ProperPath), file.FileName));
lblFilesUploaded1.Text += String.Format("{0}<br />", file.FileName);
}
}
在你的解决方案中,你在foreach中始终指的是FileUpload控件而不是当前上传的文件。