iis 如何显示存储在本地驱动器上的图像?

83qze16e  于 2023-06-23  发布在  其他
关注(0)|答案(2)|浏览(109)

我将图像保存在驱动器中的以下路径中:
D:\EdsabPmGetsDocument\images\FeaturesImage\1BBD0316AC99418EA5F7B4AECE821581.jpg.
如何将此文件路径转换为客户端键入图像时可在浏览器中查看图像的地址,例如
'http://localhost:5073/D://EdsabPmGetsDocument//images//FeaturesImage//1BBD0316AC99418EA5F7B4AECE821581.jpg'?“
这是我的代码:

public async Task<IEnumerable<DocumentInfoDto>> DocumentFile(string featureId)
{
    var featureDocument = await _featureDocumentRepository.FeatureDocumentData(featureId);
   
    if (featureDocument is null||!featureDocument.Any()) throw new NotFoundException();
    var path = 'D:\EdsabPmGetsDocument'+ StaticPath + featureDocument.ElementAt(0).DocPath;
    var directoryInfo = new DirectoryInfo(path);
    var fileInfos = directoryInfo.GetFiles("*.*", SearchOption.AllDirectories);
        var imageInfo = fileInfos.Select(a => StaticPath + featureDocument.ElementAt(0).DocPath + "//" + a.Name);

    return (from image in imageInfo let selectImage
        = featureDocument.FirstOrDefault(a =>
            (a.DocName) == image.Split("//").LastOrDefault())
        where selectImage is not null
        select new DocumentInfoDto {Id = selectImage.Id ,
            ImagePath = image, Description = selectImage.Description, DocName = selectImage.DocName,DocExtention =selectImage.DocExtension }).ToList();
}

有人可以帮助我显示图像,图像从外部的项目目录?

aelbi1ox

aelbi1ox1#

经过搜索我找到了解决这个问题的方法

app.UseStaticFiles(new StaticFileOptions
{
    FileProvider = new PhysicalFileProvider(
        "D:\\EdsabPmGetsDocument"),
    RequestPath =new PathString("/Assets/Image")
});
app.UseDirectoryBrowser(new DirectoryBrowserOptions
{
    FileProvider = new PhysicalFileProvider("D:\\EdsabPmGetsDocument"),
    RequestPath = new PathString("/Assets/Image")
});

添加到您的启动然后chnage您请求到此:
http://localhost:5073/Assets/Image//images//FeaturesImage//1BBD0316AC99418EA5F7B4AECE821581.jpg
那么这份工作

y4ekin9u

y4ekin9u2#

我不确定如果你只是想提供一个文件夹与图像,或者如果你想有'更多的控制'所有它。
如果您只想提供图像,一个选择是配置您的Web服务器以提供此静态文件(例如:通过创建一个虚拟目录到您的站点)
如果你需要更多的控制(例如检查请求者是否有足够的权限,...)你可以在你的控制器中创建另一个方法并返回文件。
你可以把它作为一个起点:

public async Task<IActionResult> GetImage(string virtualPath)
{
    string physicalPath = ... // your mapping code goes here
    byte[] image = System.IO.File.ReadAllBytes(physicalPath);

    return File(image, "image/png");
}

然后,www.example.com中的所有正常路由asp.net适用。

  • 注意:您的应用程序必须对您想要提供的文件具有读取权限 *

相关问题