通过JQuery POST发送BSON数据

时间:2014-09-15 15:50:32

标签: jquery asp.net-mvc base64 json.net bson

我有一个关于通过JQuery的帖子将二进制(base64)数据发送到我的MVC项目中的操作的问题。 base64数据是从HTML5画布检索的裁剪图像(通过JCrop完成裁剪)。它适用于非常小的图像 - 但是在较大的图像上,我的控制器操作的参数中没有任何内容。这是示例电话:

    var temp = canv1.toDataURL("image/png");
    var base64 = temp.replace('data:image/png;base64,', '');
    var image = { cropped : base64 };

    $.ajax({
        type: "POST",
        url: "/Image/Upload",
        data: image,
        processData: false,
        success: function (e) {
            alert('Cropped Image saved!');
        },
        failure: function (e) {
            alert(e);
        },
        error: function (e) {
            alert(e.d);
        }
    });

我的控制器设置为立即在动作中接收数据作为String参数,但我不确定这是否完全正确,因为我正在处理二进制数据我猜...

现在我明白我的错误处理在那里有点冒险,但无论为什么更大的图像根本不会被传递,但更小的可以吗?而且,我读到如果你没有说processData: false,那么数据会像查询字符串一样传入,因此受2048字符限制(不要引用我的数字,我知道它是一个小字符限制不能准确记住它是什么)。

无论如何,长话短说我想知道如何使用JQuery的post方法将base64数据传递给我的控制器,如BSON(因为我读到BSON对于处理二进制数据更有效,因为JSON是意在处理字符串数据)。另外,我使用 MongoDB 作为后端,所以最好还是与BSON合作。

我已经读过一个好用的框架是 JSON.NET ,但我找不到有关将base64数据转换为BSON并通过JQuery的帖子传递的信息(至少这个是我想要发生的事情。)

我对我的问题的替代解决方案持开放态度,但建议使用文件上传控件并发布文件是不合适的,因为我正在处理来自画布的裁剪图像,并且它不存在在这种状态之外的图像(据我所知)。

请帮忙!如果我走错了轨道,那么正确的方向就会受到很大的欢迎。

(ps:也希望尽可能保持“异步”,以避免整页刷新。)

0 个答案:

没有答案