从文件系统返回映像
本文关键字:映像 返回 文件系统 | 更新日期: 2023-09-27 18:05:36
文件系统中有成功上传的图像,我想访问它。因此,我写了GET
-method
[HttpGet]
public ActionResult Get(string id) {
var path = $@"d:'smth'upload'{id}.jpeg";
return File(path, "image/jpeg");
}
我完全确定在所需的路径中有所需的名称的文件,但任何时候尝试创建File(path, "image/jpeg")
,我得到Could no find file
例外。似乎我无法访问wwwroot
以外的文件夹。也许我错过了一些重要的工作与静态文件文章?
那么,有没有人可以解释如何通过GET
-method返回存储在web服务器文件夹外的文件系统中的图像
虽然@Shyju说的是真的,而且File
helper方法不接受物理文件路径,但PhysicalFile
helper方法可以(参见GitHub源代码)。
[HttpGet]
public ActionResult Get(string id) {
var path = $@"d:'smth'upload'{id}.jpeg";
return PhysicalFile(path, "image/jpeg");
}
File
方法没有接受物理位置的重载。有一个使用虚拟路径,你的图像应该在web app根目录下。
但是还有另一个重载,您可以为您的用例使用它。这个方法将字节数组作为File
方法的第一个参数。您可以从可访问的物理目录(假设您的文件存在)读取文件,并将其转换为字节数组并将其传递给file方法。
[HttpGet]
public ActionResult Get(string id)
{
var path = $@"d:'smth'upload'{id}.jpeg";
byte[] bytes = System.IO.File.ReadAllBytes(path);
return File(bytes, "image/jpeg");
}
你不能,如果你可以,那就意味着外部世界的每个人都可以做一个GET/POST表单并访问公共文件夹之外的文件。如果有人上传文件到你的web服务器,它应该驻留在你的tmp目录下,你应该可以使用asp.