1

我在服务器端的一个文件夹中保存了很多图像,数据库中有每个图像的 url,客户端由于许可无法直接打开图像。我的问题是如何编码图像以从服务器在浏览器中显示它?

这是我在搜索图像的操作结果中的代码:

public FileResult SearchImage()
{

    var path = @"\\jesus-pc\Frontera\IMAGENES\SINGNOS DISTINTIVOS\0\80HP23891268272.TIF";
    var img1 = System.IO.File.ReadAllBytes(path);

    return File(im1, "image/jpg");
}

图像存在,但这是显示的内容:

图片未加载

我尝试使用 Convert.ToBase64String(img1)但出现此错误:

the server responded with a status of 414 (Request-Uri Too Long)

我究竟做错了什么?

更新:

我没有写出我正在做的事情的全部代码,这很糟糕。

最后没有提到的部分是我使用 ajax 调用图像。

当用户发送信息请求时,会有一个链接打开一个模态框。在该模态框内是必须显示图像的位置,但图像将使用 ajax 加载,因为不应重新加载页面。因此将使用 ajax 请求图像。这是我的代码:

$(".doc").dblclick(function () {


$.ajax({
    url: "mainpage/SearchImage",
    data: "",
    type: "post",
    success: function (data) {
        ModalWindow.open();
        document.getElementById("img_1").src = data;
    }

})
4

1 回答 1

0

考虑使用FileStreamResult而不是FileResult. 这应该可以解决您的问题。代码应该类似于:

public FileStreamResult SearchImage()
{

    var path = 
       @"\\jesus-pc\Frontera\IMAGENES\SINGNOS DISTINTIVOS\0\80HP23891268272.TIF";
    var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read);
    return new FileStreamResult(fileStream, "image/jpeg");
}

引起我注意的另一件事是指定的 mime 类型。在文件名中是,tif但在代码中是jpeg.

更新

你为什么要为此使用ajax?你可以这样做:

$('#img_1').attr('src', 'mainpage/SearchImage');
于 2013-04-18T13:01:24.170 回答