Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 使用ASP.NET Core和MVC存储本地文件_Asp.net Mvc_Asp.net Core - Fatal编程技术网

Asp.net mvc 使用ASP.NET Core和MVC存储本地文件

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内核,环境中方便的路径查找功能就消失了。HttpContext和HttpServerUtility已被剥离。缓存框架中的应用程序存储也消失了。我再也不能(在代码中)假设我的服务器正在使用IIS,或者它甚至运行在Windows机箱上

我没有数据库;我有一组JSON文件。由于本问题范围之外的原因,无法将其存储在数据库中


如何读取和写入服务器上的文件?

在新的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不再存在