Geo*_*mas 8 jquery spring-mvc html5-canvas
我在我的应用程序中使用了cropper.js插件来裁剪图像.我可以裁剪图像.现在我正在尝试上传图片而不是下载它们.我更新了显示裁剪图像的模态窗口,如下所示:
<!-- Show the cropped image in modal -->
<div class="modal fade docs-cropped" id="getCroppedCanvasModal" aria-hidden="true" aria-labelledby="getCroppedCanvasTitle" role="dialog" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="getCroppedCanvasTitle">Cropped</h4>
</div>
<div class="modal-body"></div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal" style = "float: left;">Close</button>
<form class="form-inline" id="croperImgForm" role="form" method="post" action="${rc.getContextPath()}/module/simplewebcontent/save-image" enctype="multipart/form-data">
<label class="checkbox-inline">
<input type="checkbox" id="inlineCheckbox1" value="option1"> Save Image
</label>
<label class="checkbox-inline">
<input type="checkbox" id="inlineCheckbox2" value="option2">Save Thumbnail
</label>
<button type="submit" class="btn btn-primary" id="svImg" style = "margin-left: 10px;">Save</button>
</form>
</div>
</div>
</div>
</div><!-- /.modal -->
Run Code Online (Sandbox Code Playgroud)
在这里,我在底部添加了一个表单,其中包含保存图像的选项.我试图使用以下脚本来保存表单:
$("#svImg").click( function()
{
alert('button clicked');
$("#croperImgForm").submit(function(e)
{
var postData = $(this).serializeArray();
var formURL = $(this).attr("action");
$.ajax(
{
url : formURL,
type: "POST",
data : postData,
dataType : "html",
success:function(htmlData)
{
},
error: function( xhr, status, errorThrown ) {
console.log( "Error: " + errorThrown );
console.log( "Status: " + status );
console.dir( xhr );
},
});
e.preventDefault();
e.unbind();
});
});
Run Code Online (Sandbox Code Playgroud)
现在我从文档中发现我应该使用以下代码来保存图像:
// Upload cropped image to server if the browser supports `canvas.toBlob`
$().cropper('getCroppedCanvas').toBlob(function (blob) {
var formData = new FormData();
formData.append('croppedImage', blob);
$.ajax('/path/to/upload', {
method: "POST",
data: formData,
processData: false,
contentType: false,
success: function () {
console.log('Upload success');
},
error: function () {
console.log('Upload error');
}
});
});
Run Code Online (Sandbox Code Playgroud)
但我不知道如何使用此代码作为表单提交的一部分,我试图实现作为ajax调用.
我也使用Spring mvc,因此在上传图像时控制器方法中的参数是什么.
尽管很久以前就有人问过这个问题,但我仍然分享了一个指向我刚刚在其他人问题的上下文中发布的解决方案的链接。
我希望它能帮助在此页面上找到的人。(就像我登陆并没有找到解决方案一样) 使用 Cropper.js 裁剪图像,然后上传(或显示)裁剪后的图像。
在上面的代码中,请记住 Canvas 函数toBlob
接受 3 个参数(根据Mozilla 文档):
callback
mimeType
例如image/jpg
quality
例如90
因此,在您的函数中,您可以包含mimeType
和quality
选项。另外,在附加行中包含文件名的第三个参数(具有相同的扩展名)
canvas.toBlob(function (blob) {
var formData = new FormData();
/* Add blob and file name */
formData.append('croppedImage', blob, 'file.jpg');
$.ajax('/path/to/upload', {
method: "POST",
data: formData,
processData: false,
contentType: false,
success: function () {
console.log('Upload success');
},
error: function () {
console.log('Upload error');
}
});
/* This is the important part */
}, 'image/jpeg', 0.9);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21783 次 |
最近记录: |