【问题标题】:Display image using FileStreamResult from ASP.Net MVC使用来自 ASP.Net MVC 的 FileStreamResult 显示图像
【发布时间】:2016-10-06 15:40:01
【问题描述】:

我正在开发一个允许刷新验证码图像的验证码控件。我没有将图像存储在服务器上的选项。为此,我正在使用 ASP.Net MVC。

我的控制器动作代码:

public FileResult GetCaptchaImage()
{

    // Create a CAPTCHA image using the text stored in the Session object.
    CaptchaImage ci = new CaptchaImage(this.Session
        ["CaptchaImageText"].ToString(), 300, 75);
    // Change the response headers to output a JPEG image.
    MemoryStream stream = new MemoryStream();
    ci.Image.Save(stream, ImageFormat.Png);
    stream.Seek(0, SeekOrigin.Begin);
    return new FileStreamResult(stream, "image/png");
}

在 razor 视图中显示图像的 html 代码

<img id="captchaImage" class="img-responsive" src="@Url.Action("GetCaptchaImage","Home")" />

现在,当我单击刷新按钮时,这个 img 应该会更新。单击按钮后,我再次使用 ajax 调用调用相同的控制器操作,它正在返回 FileStreamResult。

function RefreshCaptcha() {
$.ajax({
    url: "/Home/GetCaptchaImage"
}).then(function (data) {
    console.log(data);
});

}

现在,使用 JQuery,如何在图像中设置响应内容?

请指导。非常感谢。

【问题讨论】:

    标签: jquery html asp.net-mvc image stream


    【解决方案1】:

    不需要使用ajax,只需调用相同的URL,但传入一个无缓存查询字符串,因此它不会缓存值,然后更改图像的来源:

    $('#captchaImage').attr('src', '/Home/GetCaptchaImage?nc=' + (new Date).getTime(););
    

    在我的示例中,我使用的是纪元时间,但您可以简单地使用随机值。

    【讨论】:

    • 非常感谢安德烈斯。这有帮助。
    猜你喜欢
    • 1970-01-01
    • 2013-03-29
    • 2016-10-07
    • 2013-08-02
    • 1970-01-01
    • 1970-01-01
    • 2011-01-18
    • 2022-01-08
    • 2015-01-08
    相关资源
    最近更新 更多