M H*_*M H 1 c# asp.net file-upload
我在许多网站上看到过这种风格的演示,作为在 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);
}
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过这种技术,结果与上述相同。有什么建议吗?我认为这与我的 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));
}
}
Run Code Online (Sandbox Code Playgroud)
这应该可以解决问题:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
在您的解决方案中,您在 foreach 中始终指的是 FileUpload 控件,而不是当前上传的文件。