我有一个ASP.NET MVC项目,我正在使用Cropbox.js:jQuery Image Crop Plugin-http://www.jqueryrain.com/demo/jquery-crop-image-plugin/裁剪用户的图像,但是我找不到如何将裁剪后的图像发送到控制器。

JavaScript看起来像这样:

 <script type="text/javascript">
    window.onload = function () {
        var options =
        {
            imageBox: '.imageBox',
            thumbBox: '.thumbBox',
            spinner: '.spinner',
            imgSrc: 'avatar.png'
        }
        var cropper;
        document.querySelector('#file').addEventListener('change', function () {
            var reader = new FileReader();
            reader.onload = function (e) {
                options.imgSrc = e.target.result;
                cropper = new cropbox(options);
            }
            reader.readAsDataURL(this.files[0]);
            this.files = [];
        })
        document.querySelector('#btnCrop').addEventListener('click', function () {
            var img = cropper.getAvatar()
            document.querySelector('.cropped').innerHTML += '<img id="Portrait" src="' + img + '">';
        })
        document.querySelector('#btnZoomIn').addEventListener('click', function () {
            cropper.zoomIn();
        })
        document.querySelector('#btnZoomOut').addEventListener('click', function () {
            cropper.zoomOut();
        })
    };
</script>


我尝试在控制器中使用以下命令,但由于我正在请求文件,因此不确定它是否可以正常工作:

HttpPostedFileBase file = Request.Files["Portrait"];


也许可以将img文件从JavaScript存储到模型中?

最佳答案

我的朋友通过添加以下内容解决了该问题:

document.getElementById('avatarData').value = img;


对于脚本的这一部分:

    document.querySelector('#btnCrop').addEventListener('click', function () {
        var img = cropper.getAvatar()
        document.querySelector('.cropped').innerHTML += '<img src="' + img + '">';
        //new added
        document.getElementById('avatarData').value = img;
    })


然后在“视图”表单中使用不可见的输入:

<input type="hidden" id="avatarData" name="avatarData" value="">


现在我可以在控制器中捕获它:

var file = Request.Form["avatarData"];


我会得到:



要使用此字符串,有一个非常有用的问题和答案-MVC Convert Base64 String to Image, but ... System.FormatException

10-05 20:59