Server.MapPath(FileUploadControl.FileName) 不返回完整路径 + 文件名



>我正在尝试将文件的路径(包含文件名(保存到数据库列。假设我的项目目录名为Project,那里有一个名为附件的文件夹。

在我的代码中,我这样做是为了将文件上传到我选择的位置:

string filename = Path.GetFileName(FileUploadControl.FileName);
FileUploadControl.SaveAs(Server.MapPath("~/Attachments/") + filename);

这很好用,如果我打开该文件夹,文件就在那里!现在我的问题是将path+filename保存到数据库列。我目前正在使用Server.MapPath(FileUploadControl.FileName),但是当我签入数据库列时,它只保存路径字符串直到我的项目,例如C:[somepath]Project. 因此,它缺少附件文件夹和文件名。有什么帮助吗?我已经在这里阅读了很多关于FileUploadControl的主题,但没有任何帮助。 我正在使用 ASP.NET C#,保存该信息的列类型是varchar(MAX)

使用Path.GetFileName而不是Server.MapPath来获取要存储在数据库中的文件名。

请注意,不建议将完整路径存储在数据库中。 根据我的经验,仅存储路径的相关部分是您需要的。

如果要将文件存储在以下路径中:

C:ApplicationFilesDocuments20170811Myfile.txt

然后只将相关部分存储在数据库中:

FilesDocuments20170811Myfile.txt

将 C:\Application 部分放在应用程序的配置文件中,以便获取/构建物理路径。 使用此方法,如果将文件移动到另一个驱动器 (D:(,则只需更改配置即可。 否则,您必须更新存储在数据库中的每个文件名/路径。

我发现获取您提到的路径的唯一可靠方法是:

var inputFileDirectory = HttpContext.Current.Server.MapPath("~/Attachments/");
var fileName = System.IO.Path.GetFileName(fileUploader.PostedFile.FileName);
inputFileDirectory += fileName;

此方法适用于所有浏览器,因为IE和Edge会将PostedFile.FileName保存为完全限定的路径,而其他人将仅保存文件名。

相关内容

  • 没有找到相关文章

最新更新