c# - 如何将屏幕截图发送到 Controller ?

标签 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("../../HomeController/SetScreenShot", {
                sendImage: image
            }, function () {});
        }
    });
});

Controller

public void SetScreenShot()
{
    HttpPostedFileBase file = new HttpPostedFileBase();
    file = Request.Form["sendImage"].ToString();
}

最佳答案

简单来说,隐藏的输入可以被跳过。这就能解决问题:

$("#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); }
            });
        }
    });

CONTROLLER (修改版本,将图像保存到映射文件夹):

    [HttpPost]
    public ActionResult SaveSnapshot()
    {
        bool saved = false;
        if (Request.Form["base64data"] != null) {
            string image = Request.Form["base64data"].ToString();
            byte[] data = Convert.FromBase64String(image);
            var path = Path.Combine(Server.MapPath("~/Upload"), "snapshot.png");
            System.IO.File.WriteAllBytes(path, data);
            saved = true;
        }

        return Json(saved ? "image saved" : "image not saved");
    }

关于c# - 如何将屏幕截图发送到 Controller ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23220723/

相关文章:

javascript - jQuery/Ajax - 成功消息后重定向到另一个页面

javascript - ExtJs:如何验证可编辑网格并防止空单元格

php - jTable jQuery 插件 为什么我的 MySQL 存储过程失败?

python - 通过 ajax 调用 Flask 更改来自另一个驱动器的图像源

java - c# RSA 使用私钥加密

c# - 为什么 C# 不像 C 那样支持局部静态变量?

c# - 如何从ms word文档的当前可见页面获取单词?

c# - 创建 MSBuild 自定义任务以在*编译之前*修改 C# 代码

javascript - 从代码隐藏中打开确认对话框

php - php处理json序列化表单数据