ASP.NET CORE 5 MVC 如何将绝对路径转换为相对路径?

Panait Rares Horia

所以在项目中,用户可以上传、下载、删除、预览和搜索(实时)文件。这些文件存储在 wwwroot 文件夹内名为“Uploads”的文件夹中。截至目前,代码具有绝对路径,但项目需要在不同的计算机上,所以我需要相对路径,谁能帮我提供示例语法?

[HttpPost]
        public async Task<IActionResult> Index(IFormFile fifile, string category)
        {
            string path = @"C:\Users\panara5\source\repos\Proiect2PracticaClona\Proiect2PracticaClona\wwwroot\Uploads\";
            var fisave = Path.Combine(path, fifile.FileName);
            var stream = new FileStream(fisave, FileMode.Create);
            await fifile.CopyToAsync(stream);

            Files fileModel=new Files()
            {
                info = fifile.FileName,
                category = category
            };

            _fileRepository.AddFile(fileModel);
   
          
            stream.Close();

            files = _fileRepository.GetFileList();

         

            return RedirectToAction("Index",files);
        }
        public IActionResult Index(string id)
        {
            files = _fileRepository.GetFileList();

            if (id == null)
                return View(files);

            List<Files> sortedfiles = new List<Files>();
            foreach (var item in files)
            {
                if (item.category == id)
                {
                    sortedfiles.Add(item);
                }
            }
            
            
            return View(sortedfiles);
        }
        

        public IActionResult Delete(string filedel)
        {
            filedel = Path.Combine("~/Uploads/", filedel);
            FileInfo fi = new FileInfo(filedel);
            if (fi != null)
            {
                System.IO.File.Delete(filedel);
                fi.Delete();
            }
            return RedirectToAction("Index");
        }

尝试删除时我也得到了一个空引用

放置和

我相信你想要 IWebHostEnvironment.WebRootPath

您需要使用依赖注入来访问它,但之后,您可以只引用和 Path.Combine。见下文:

public class FileController : Controller
{
    private readonly IWebHostEnvironment environment;

    public FileController(IWebHostEnvironment env)
    {
        this.environment = env;
    }

    private string UploadFilePath() => Path.Combine(environment.WebRootPath, "uploads");
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Asp.Net Core MVC中的自定义相对路径

如何在使用MVC的现有ASP.NET Core应用中使用React Router设置相对路径

ASP.NET Core 中的相对路径

asp.net MVC将数据库中的相对路径保存为非完整路径

如何在ASP.Net Core替代方法中获取Server.MapPath的绝对路径

IFormFile拒绝对路径的ASP.Net Core访问

ASP.net MVC核心RedirectToPage错误-指定根相对路径错误

Asp.Net MVC使用Tilde in href属性中的相对路径

Asp.Net MVC-CSS相对路径与捆绑包

ASP.NET MVC-从控制器查找App_Data文件夹的绝对路径

使用 ASP.NET Core 5 MVC 将 Json 结果转换为 HTML 形式

Aspnet MVC中的相对路径和绝对路径有什么区别?

在 ASP.Net Core MVC 5 中将音频转换为文本并将文本转换为音频

ASP.NET MVC 5、ASP.NET Core MVC 5 有什麼區別?

ASP.NET MVC 6(ASP.NET Core或ASP.NET5)中的友好URL

用于 ASP.NET Core 5 MVC 的 NuGet 包

ASP.NET Core [FromBody]与MVC 5绑定

如何在Asp.net Core MVC(又名Asp.Net 5 RC1)中检查响应cookie?

如何将绝对路径转换为相对路径?

如何在 ASP.NET Core 5 MVC (.NET 5) 中获取记录的用户数据?

如何在 Internet Explorer 11 上运行 Angular 5 asp.net core MVC

ASP.NET CORE 5 MVC 如何实现工作搜索栏?

将MVC 5 adfs转换为.net core adfs

相当于ASP.NET MVC 5的HttpException的ASP.NET Core

ASP.NET Core MVC视图组件搜索路径

如何将导航栏“下拉菜单”与 asp-controllers 和 asp-actions 绑定。(ASP.Net Core 5 MVC)

如何使 ASP.NET Core MVC 路由生成相对?

在ASP.NET Core MVC中将XML转换为JSON

谁能告诉我如何将物理文件保存到配置提供的路径 - ASP.NET Core MVC