上传并保存文件到根目录外的IIS虚拟目录



基于微软的网站,甚至是这个论坛,普遍的共识似乎是将网站上传的用户文件保存在wwwroot文件夹之外(C:inetpubwwwroot),甚至更好地保存在系统驱动器之外。我在IIS中为我的文件上传设置了一个虚拟目录(C:inetpubfiles),该目录位于wwwroot之外,但仍在C驱动器上(我们只有一个驱动器,我无法将其分区为另一个驱动器)。所以希望这在这方面仍然被认为是安全的!然而,我的问题是我使用以下代码将目录获取到我的托管环境:

var filePath = Path.Combine(env.WebRootPath, document.DOCUMENT_LOCATION);
var fileName = document.FILENAME_AFTER_UPLOAD;
var fullPath = Path.Combine(filePath, fileName);

我不确定我应该使用什么文件路径来保存到虚拟目录。虚拟目录有一个别名"files"所以它的虚拟路径是/files,所以我使用env。webrotpath + "/files"或者是否有其他方式访问虚拟目录/路径?For background document是一个SQL查询的模型对象,它返回我要保存的文件路径和我们在SQL服务器中创建的文件名。

所以,您想要在env的父目录之外上传一个文件。Webrootpath指的是wwwroot文件夹。因此,尝试下面的代码:-

var filePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot/img", document.Document.FileName);

上面,env.webrootpath不需要使用,因为你想要更动态的路径。

或者如果你想上传到C盘而不是wwwroot.

string SavePath = Path.Combine(Directory.GetCurrentDirectory(), (@"C:", model.FormFile.FileName);

最新更新