Asp.net mvc 使用ASP.NET Core和MVC存储本地文件
有了Asp.NET内核,环境中方便的路径查找功能就消失了。HttpContext和HttpServerUtility已被剥离。缓存框架中的应用程序存储也消失了。我再也不能(在代码中)假设我的服务器正在使用IIS,或者它甚至运行在Windows机箱上 我没有数据库;我有一组JSON文件。由于本问题范围之外的原因,无法将其存储在数据库中Asp.net mvc 使用ASP.NET Core和MVC存储本地文件,asp.net-mvc,asp.net-core,Asp.net Mvc,Asp.net Core,有了Asp.NET内核,环境中方便的路径查找功能就消失了。HttpContext和HttpServerUtility已被剥离。缓存框架中的应用程序存储也消失了。我再也不能(在代码中)假设我的服务器正在使用IIS,或者它甚至运行在Windows机箱上 我没有数据库;我有一组JSON文件。由于本问题范围之外的原因,无法将其存储在数据库中 如何读取和写入服务器上的文件?在新的ASP.NET核心世界中,部署时,我们有两个文件夹appRoot和wwwroot 我们通常只将文件放在wwwroot文件夹下,我
如何读取和写入服务器上的文件?在新的ASP.NET核心世界中,部署时,我们有两个文件夹appRoot和wwwroot 我们通常只将文件放在wwwroot文件夹下,我们打算直接为http请求提供服务。因此,如果您的json文件是直接由客户端js使用的,那么您可能会将它们放在那里,否则您将使用Approt下面的另一个文件夹 下面我将展示如何解析这两种场景的路径,即如何将json字符串保存到Approt或wwwroot下面的文件夹的示例代码。在这两种情况下,请将您的位置视为相对于其中一个文件夹的虚拟路径,即/some/folder/path,其中第一个/表示appRoot或wwwroot
public class MyFileProcessor
{
public MyFileProcessor(IHostingEnvironment env, IApplicationEnvironment appEnv)
{
hostingEnvironment = env;
appEnvironment = appEnv;
appRootFolder = appEnv.ApplicationBasePath;
}
private IHostingEnvironment hostingEnvironment;
private IApplicationEnvironment appEnvironment;
private string appRootFolder;
public void SaveJsonToAppFolder(string appVirtualFolderPath, string fileName string jsonContent)
{
var pathToFile = appRootFolder + appVirtualFolderPath.Replace("/", Path.DirectorySeparatorChar.ToString())
+ fileName;
using (StreamWriter s = File.CreateText(pathToFile))
{
await s.WriteAsync(jsonContent);
}
}
public void SaveJsonToWwwFolder(string virtualFolderPath, string fileName string jsonContent)
{
var pathToFile = hostingEnvironment.MapPath(virtualFolderPath) + fileName;
using (StreamWriter s = File.CreateText(pathToFile))
{
await s.WriteAsync(jsonContent);
}
}
}
如果您需要进一步的示例代码,我在这里有一个项目,我将博客文章保存为xml文件,内容页保存为json文件。我遇到一个问题,我不想将上传的文件保存到webroot之外的文件夹中,例如UNC路径或其他什么。这可能吗?IApplicationEnvironment不再存在