c# - 使用 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。图像控制?有没有更基本的方法来做到这一点?
感谢您的帮助。
解决方案
我使用 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 设置无限长度吗?
非常感谢这个伟大的家庭。
推荐阅读
- python - Tensorflow - 计算 RBF 网络的欧几里得距离
- string - 二进制表示的第 n 位
- c# - 如何在实体框架中从另一个上下文中删除一个上下文中的项目?
- html - 如何在不破坏所有内容的情况下将导航栏设置为固定并在右侧设置菜单?
- c++ - "swscanf" 直到 $ 符号才解析字符串
- powershell - JEA 调用命令问题
- node.js - 安装后 gulp 语法错误
- python - 如何在 Python 中解析 Xpath 表达式?
- java - 如何在执行方法之前验证 Java API @HeaderParam
- laravel - 查看特定用户今天创建的数据库数据