为了账号安全,请及时绑定邮箱和手机立即绑定

无法访问后端项目中上传的图像

无法访问后端项目中上传的图像

C#
大话西游666 2023-09-24 11:13:49
我正在尝试访问存储在前端应用程序的 /uploads/ 文件夹中的图像。我得到http://localhost:4200/uploads/a.jpg和http://localhost:4200/StaticFiles/a.jpg的 404 。我需要图像的路径才能将其显示在图库中。我尝试使用图像的完整路径(“D:/blabla/uploads/a.jpg”),但似乎受到限制。然后我使用下面的代码从后端提供到我的上传文件夹的路径,但我仍然得到 404。我的后端和前端项目位于不同的文件夹中,我的前端将请求发送到后端的端口。后端运行最新的.net core,前端是Angular 8。这就是我提供静态文件的方式:var aux = Path.Combine(Directory.GetCurrentDirectory(), "uploads");app.UseStaticFiles(new StaticFileOptions    {        FileProvider = new PhysicalFileProvider(aux),        RequestPath = "/StaticFiles"    });这就是我上传图像的方式。该代码可以工作并上传项目内 /uploads 文件夹中的图像。var uploadFilesPath = Path.Combine(_host.ContentRootPath, "uploads");if (!Directory.Exists(uploadFilesPath))    Directory.CreateDirectory(uploadFilesPath);    foreach (var file in fileData)        {            var fileName = Guid.NewGuid() + Path.GetExtension(file.FileName);            var filePath = Path.Combine(uploadFilesPath, fileName);            using (var stream = new FileStream(filePath, FileMode.Create))                {                    file.CopyTo(stream);                }            var propToAddImageTo = _propManager.GetById(id);            _propManager.AddImage(propToAddImageTo, filePath);        }当我尝试设置一个简单的<img src="localhost:4200/uploads/a.jpg">或时<img src="localhost:4200/StaticFiles/a.jpg">,Mozilla 开发人员工具的网络选项卡上的请求显示 404。
查看完整描述

2 回答

?
12345678_0001

TA贡献1802条经验 获得超5个赞

的默认值_host.ContentRootPath等于Directory.GetCurrentDirectory(),但前提是您使用WebHost.CreateDefaultBuilder。从文档中:

CreateDefaultBuilder执行以下任务:

  • ...

  • 将内容根设置为 . 返回的路径Directory.GetCurrentDirectory

您的代码假设始终ContentRootPath与相同,但这并不总是正确的。如果您不使用,或者您的代码分为多个项目(正如您在评论中提到的),它们将不会指向同一个地方。Directory.GetCurrentDirectoryCreateDefaultBuilder


查看完整回答
反对 回复 2023-09-24
?
胡说叔叔

TA贡献1804条经验 获得超8个赞

下面的代码对我有用:


app.UseCors("CorsPolicy");

app.UseStaticFiles();

app.UseStaticFiles(new StaticFileOptions()

{

    FileProvider = new PhysicalFileProvider(Path.Combine(Directory.GetCurrentDirectory(), @"uploads")),

    RequestPath = new PathString("/StaticFiles")

});

app.UseMvc();

它需要该uploads文件夹应该存在于根目录中,否则会抛出错误。假设结构是 ApplicationName/uploads/a.jpg ,您可以使用如下:


<img src="http://localhost:xxxx/StaticFiles/a.jpg">


要在服务器端保存图像,您可以通过以下方式找到路径:


var pathToSave = Path.Combine(Directory.GetCurrentDirectory(), "uploads");


查看完整回答
反对 回复 2023-09-24
  • 2 回答
  • 0 关注
  • 94 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信