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

Uploading and saving a file to IIS virtual directory outside the root folder

基于微软的网站甚至这个论坛,普遍的共识似乎是将网站上传的用户文件保存在 wwwroot 文件夹 (C:\inetpub\wwwroot) 之外,甚至更好地保存在系统之外驾驶。我在 IIS 中设置了一个虚拟目录 (C:\inetpub\files) 用于我的文件上传,它位于 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.WebRootPath +“/files”还是有其他方法访问虚拟directory/path?背景文档是来自 SQL 查询的模型对象,returns 我要保存的文件路径和我们在 SQL 服务器中创建的文件名。

所以,你想在 env.webrootpath 的父目录之外上传一个文件,意味着 wwwroot folder.so 试试下面的代码:-

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);