【发布时间】:2017-12-27 11:18:54
【问题描述】:
我要做的是捕获图像,然后将其保存在服务器端。到目前为止,图像只保存在客户端。
<script>
html2canvas(document.querySelector("body")).then(canvas => {
var img = canvas.toDataURL("image/png")
var img = canvas.toDataURL("image/png").replace("image/png", "image/octet-stream");
///location.href = img;
$.ajax({
type: 'POST',
url: "UserHome/UploadImage",
data: '{ "imageData" : "' + img + '" }',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
alert('Image saved successfully !');
}
});
</script>
用户主控制器:
static string path = @"E:\XXXXX\XXXXXXX\";
[WebMethod()]
public static void UploadImage(string imageData)
{
string fileNameWitPath = path + DateTime.Now.ToString().Replace("/", "-").Replace(" ", "- ").Replace(":", "") + ".png";
using (FileStream fs = new FileStream(fileNameWitPath, FileMode.Create))
{
using (BinaryWriter bw = new BinaryWriter(fs))
{
byte[] data = Convert.FromBase64String(imageData);//convert from base64
bw.Write(data);
bw.Close();
}
}
}
我已经关注了这个tute:http://www.dotnetfunda.com/articles/show/1662/saving-html-5-canvas-as-image-on-the-server-using-aspnet
为什么页面加载完成后不立即保存图像?虽然,如果我取消注释以下行并删除 ajax,它将在另一个选项卡中显示图像:
///location.href = img;
另外,我想知道即使浏览器最小化,是否可以截屏?或者有什么方法可以做到这一点?
更新:
所以我已经成功将截图保存到我的服务器端,但是问题仍然存在,我如何在浏览器最小化时截屏?我运行脚本并最小化浏览器,但它仍然捕获浏览器图像并将其保存到服务器文件夹。无论如何我现在可以在浏览器外捕获屏幕图像吗?
【问题讨论】:
-
看起来您在发送文件时遇到问题。尝试来自here 的回答。
标签: javascript jquery asp.net-mvc canvas