首页 > 解决方案 > 使用 Ajax 从文件中获取下一个图像

问题描述

我有一个 asp.net Web 应用程序,它显示来自不同集合的照片。这些文件位于服务器上,文件位置存储在 SQL 数据库中。我使用以下代码获取第一张图片:

System.Drawing.Image img = System.Drawing.Image.FromFile(fileLocation);
string imageName = "~/Images/hw.jpg";
string savePath = Server.MapPath(@"Images\hw.jpg");
img.Save(savePath, System.Drawing.Imaging.ImageFormat.Jpeg);
img_peq_main.ImageUrl = imageName;

我想要的是使用 ajax 从数据库中检索文件名。但是上面的代码不适用于带有 ajax 请求的服务器端。如何将文件保存到 Images 文件夹并将该源绑定到 asp。图像控制?有没有更基本的方法来做到这一点?

感谢您的帮助。

标签: c#asp.netsql-serverajaximage

解决方案


我使用 MemoryStream 和 base64 字符串解决了它。这是代码。

            System.Drawing.Image img = System.Drawing.Image.FromFile(fileLocation);
            MemoryStream ms = new MemoryStream();

            if (picType == ".jpg")
            {
                img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            }
            else if (picType == ".png")
            {
                img.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
            }

            string imgUrl = Convert.ToBase64String(ms.ToArray(), 0, ms.ToArray().Length);
            ms.Close();
            ms.Flush();
            //returns imgUrl to Json

这是Json代码。PLoc 值是返回的 base64 字符串,PType 是从 ajax 请求返回的图片类型字符串。

$.ajax({
            url: '/PicEq.aspx/GetNextPic',
            method: 'post',
            contentType: 'application/json',
            data: '{r_id:' + pId + '}',
            dataType: 'json',
            success: function (data) {
                var rawData = data.d.PLoc;
                if (data.d.PType == ".jpg") {
                    $('#<%=img_peq_main.ClientID%>').attr("src", "data:image/jpeg;base64," + rawData);
                }
                else if (data.d.PType == ".png") {
                    $('#<%=img_peq_main.ClientID%>').attr("src", "data:image/png;base64," + rawData);
                }
            },
            error: function (error) {
                alert(error);
            }
        });

请注意,当我第一次运行代码时,我在大文件上遇到错误。我解决了这篇文章的问题:我可以在 web.config 中为 maxJsonLength 设置无限长度吗?

非常感谢这个伟大的家庭。


推荐阅读