ASPNET从base64返回内存数据中的图像,并由浏览器缓存

时间:2017-07-06 14:51:07

标签: asp.net-mvc image base64 browser-cache

我从每个用户以base64格式存储的数据库图像中获取。 在我的HTML中,我想要这样的东西

  <img src="localhost:55790/getThumbnail/1">

这将调用我的服务器返回一个将被浏览器缓存的图像,以便在下一页重新加载时不再执行该调用。 我遇到的阻塞点是在服务器端,我当前的代码无效:

    [System.Web.Http.Route("getThumbnail/{userId}")]
    public ActionResult GetUserThumbnail(string userId)
    {


        var base64Image = _userService.GetUserThumbnail(userId);

        using (var imageStream = GenerateStreamFromString(base64Image))
        {
            return new FileStreamResult(imageStream, "image/jpeg");

        }
    }



    private static Stream GenerateStreamFromString(string s)
    {
        try
        {
            string base64 = s.Substring(s.IndexOf(',') + 1);
            base64 = base64.Trim('\0');
            byte[] imageFileContent = Convert.FromBase64String(base64);

            var stream = new MemoryStream();
            var writer = new StreamWriter(stream);
            writer.Write(imageFileContent);
            writer.Flush();
            stream.Position = 0;
            return stream;
        }
        catch (Exception)
        {
            return  new MemoryStream();
        }
    }

0 个答案:

没有答案