C# 如何向控制器发送屏幕截图?
我正在使用html2canvas库从页面获取快照,如何在我的C#Controller中获取该图像 查看C# 如何向控制器发送屏幕截图?,c#,javascript,jquery,asp.net-mvc,post,C#,Javascript,Jquery,Asp.net Mvc,Post,我正在使用html2canvas库从页面获取快照,如何在我的C#Controller中获取该图像 查看 $("#button").click(function () { var image; html2canvas(document.body, { onrendered: function (canvas) { image = convertCanvasToImage(canvas); $.post("../../H
$("#button").click(function () {
var image;
html2canvas(document.body, {
onrendered: function (canvas) {
image = convertCanvasToImage(canvas);
$.post("../../HomeController/SetScreenShot", {
sendImage: image
}, function () {});
}
});
});
<input type="hidden" id="hiddenScreen" />
<script>
function convertCanvasToImage(canvas) {
var image = new Image();
image.src = canvas.toDataURL("image/png");
image.id = "canvasimage";
return image;
}
$("#button").click(function () {
var image;
var data;
html2canvas(document.body, {
onrendered: function(canvas) {
image = convertCanvasToImage(canvas);
$("#hiddenScreen").append(image);
data = $('#canvasimage').attr('src');
}
});
$.ajax({
type: "POST",
url: '../../HomeController/SetScreenShot',
dataType: 'text',
data: {
base64data : data
}
});
</script>
控制器
public void SetScreenShot()
{
HttpPostedFileBase file = new HttpPostedFileBase();
file = Request.Form["sendImage"].ToString();
}
public void SetScreenShot()
{
if (Session["screenShot"] == null) Session.Add("screenShot", "");
Session["screenShot"] = Request.Form["base64data"].ToString();
}
我找到了如何做到这一点,只需要在页面上的隐藏输入中附加该图像,并从图像src发送它 查看
$("#button").click(function () {
var image;
html2canvas(document.body, {
onrendered: function (canvas) {
image = convertCanvasToImage(canvas);
$.post("../../HomeController/SetScreenShot", {
sendImage: image
}, function () {});
}
});
});
<input type="hidden" id="hiddenScreen" />
<script>
function convertCanvasToImage(canvas) {
var image = new Image();
image.src = canvas.toDataURL("image/png");
image.id = "canvasimage";
return image;
}
$("#button").click(function () {
var image;
var data;
html2canvas(document.body, {
onrendered: function(canvas) {
image = convertCanvasToImage(canvas);
$("#hiddenScreen").append(image);
data = $('#canvasimage').attr('src');
}
});
$.ajax({
type: "POST",
url: '../../HomeController/SetScreenShot',
dataType: 'text',
data: {
base64data : data
}
});
</script>
简单来说,可以跳过隐藏的输入。这将实现以下目的:
$("#button").click(function () {
html2canvas(document.body, {
onrendered: function(canvas) {
var image = canvas.toDataURL("image/png");
image = image.replace('data:image/png;base64,', '');
$.ajax({
type: "POST",
url: '../../HomeController/SaveSnapshot',
dataType: 'text',
data: { base64data : image },
success: function(result) { alert(result); }
});
}
});
控制器(经过修改的版本,将图像保存到映射文件夹中):
Request.Files[“sendImage”]
maybe?哦,是的,从控制器端必须是.Files,但如何从视图端正确发送图像?因为现在我得到了异常:uncaughttypeerror:非法调用