if (FileUpload1.HasFile)
{
//create the path to save the file to
string fileName = Path.Combine(@"E:\Project\Folders", FileUpload1.FileName);
//save the file to our local path
FileUpload1.SaveAs(fileName);
}
和这个
//check to make sure a file is selected
if (FileUpload1.HasFile)
{
//create the path to save the file to
string fileName = Path.Combine(Server.MapPath("~/Files"), FileUpload1.FileName);
//save the file to our local path
FileUpload1.SaveAs(fileName);
}
有什么区别,哪一个使用?我很困惑。顺便说一句,如果我可以在数据库中存储文件路径,下次当我想删除或查看该文件时,我该如何检索?所以,首先我将数据添加到数据库并上传.doc文件/ excel文件,下次当我要编辑该记录时,我想检索上传的文件,并在UI中显示。感谢。
答案 0 :(得分:1)
使用第二个因为它会将相对或虚拟路径转换为真实路径本身。 .u应该从db获取路径并使用它以与存储相同的方式解析路径并对其进行操作删除等等以显示url =“〜/ Files / yourfilename” yourfilefromdb -u从db
中检索它string filepath = Path.Combine(Server.MapPath("~/Files"), yourfilefromdb);
File.Delete(filepath);
for showing
if it accessible directly u can just write url="~/Files/yourfilefromdb"
答案 1 :(得分:0)
发布的两个代码块的唯一区别在于指定文件路径。
在案例1中,指定静态位置以保存文件。如果您的生产环境中保存文件的位置不同,则可能会导致问题。在这种情况下需要重建。
而在情况2中,使用相对路径指定位置。因此,它总是将文件保存在“/ Files”位置。
答案 2 :(得分:0)
//if you already know your folder is: E:\ABC\A then you do not need to use Server.MapPath, this last one is needed if you only have a relative virtual path like ~/ABC/A and you want to know the real path in the disk...
if (FileUpload1.HasFile)
{
string fileName = Path.Combine(@"E:\Project\Folders", FileUpload1.FileName);// they know the right path so .they using directly
FileUpload1.SaveAs(fileName);
}
if (FileUpload1.HasFile)
{
string fileName = Path.Combine(Server.MapPath("~/Files"), FileUpload1.FileName);// i don't know path is correct or not so they using Server.MapPath. . .
FileUpload1.SaveAs(fileName);
}