C# 未使用PhysicalFile或Razorpages中的文件加载图像
使用asp.net core 3.1和Razorpages 我正在使用PhysicalFileProvider将文件存储在根目录之外,但无法让它们加载到图像标记中,尽管路径有效 理想情况下,我希望将文件返回到图像标签,图像标签占文件的90%,而对于那些没有直接返回到浏览器然后下载的文件 我可以访问物理文件路径,但由于安全原因,Chrome不允许查看。将路径剪切并粘贴到浏览器中会成功返回文件。因此,路径正在运行,并且可以通过剪切和粘贴下载文件 完整路径为file:///C:/Dropbox/Enform/Files/699657ed-315c-e1d8-d4d5-39fb5550d14a/mars programming.jpg 因此,我尝试使用PhysicalFile通过DTO将其传递给图像标记,但它返回404,其中包含完整路径、mimeType和文件名C# 未使用PhysicalFile或Razorpages中的文件加载图像,c#,asp.net-core,razor-pages,C#,Asp.net Core,Razor Pages,使用asp.net core 3.1和Razorpages 我正在使用PhysicalFileProvider将文件存储在根目录之外,但无法让它们加载到图像标记中,尽管路径有效 理想情况下,我希望将文件返回到图像标签,图像标签占文件的90%,而对于那些没有直接返回到浏览器然后下载的文件 我可以访问物理文件路径,但由于安全原因,Chrome不允许查看。将路径剪切并粘贴到浏览器中会成功返回文件。因此,路径正在运行,并且可以通过剪切和粘贴下载文件 完整路径为file:///C:/Dropbox/Enf
Storage.ImagePFR = PhysicalFile(path, ext, filename);
我认为它可能需要一个相对路径而不是绝对路径,所以从这里使用GetRelativePath
但它也返回了404
在前端,我将其传递给
<img src="@Model.Storage.ImagePFR" class="card-img-top" alt="ImagePFR">
我试着用字符串和图像传递,但没有区别
我还想用一个文件
var bytes = await System.IO.File.ReadAllBytesAsync(path);
Storage.ImagePFR = File(bytes, ext, Path.GetFileName(path));
并将其传递给属性为的DTO
public PhysicalFileResult ImagePFR { get; set; }
public FileContentResult ImagePFR { get; set; }
<img src="@Model.Storage.ImagePFR" class="card-img-top" alt="ImagePFR">
您需要在
src
标记中包含FileName
,如下所示
<img src="@Model.Storage.ImagePFR.FileName" class="card-img-top" alt="ImagePFR">
当您使用
时,src
需要字符串
&@Model.Storage.ImagePFR
是对象
。因此它将返回@Model.Storage.ImagePFR.ToString()
,它将返回类的名称,名称空间为Microsoft.AspNetCore.Mvc.PhysicalFileResult
。因此,当您检查呈现的html时,它将显示为
,感谢您提供的信息性回复。但是,添加文件名仅用于在img标记中将文件名显示为
public FileContentResult ImagePFR { get; set; }
<img src="@Model.Storage.ImagePFR" class="card-img-top" alt="ImagePFR">
<img src="@Model.Storage.ImagePFR.FileName" class="card-img-top" alt="@Model.Storage.ImagePFR.FileName">
<img src="c:\Dropbox\Enform\Files\699657ed-315c-e1d8-d4d5-39fb5550d14a\mars-programming.jpg" class="card-img-top" >
string imgType = "data:" + GetMimeTypes(Storage) + ";base64,";
Storage.Imagetest2 = string.Format(imgType + Convert.ToBase64String(System.IO.File.ReadAllBytes(path)));
<img src="@Model.Storage.ImagePFR.FileName" class="card-img-top" alt="ImagePFR">