0

好的,我在互联网上找到了这个来上传一些文件。

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 中显示它。谢谢。

4

3 回答 3

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"
于 2013-05-16T07:23:48.033 回答
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);
    }
于 2013-05-16T08:12:07.777 回答
0

您发布的两个代码块的唯一区别是指定文件路径。

在情况 1 中,指定静态位置来保存文件。如果您的生产环境中保存文件的位置不同,则可能会导致问题。在这种情况下将需要重建。

而在情况 2 中,位置是使用相对路径指定的。因此,它将始终将文件保存在“/ Files”位置。

于 2013-05-16T07:16:11.610 回答