ajax上传图片显示不全,ajax上传图片,偶尔会出现后台保存的图片有错误或者已损坏,请问可能是什么原因造成的?...

我是把固定区域截图后生成图片上传后台,大部分时候都没问题,偶尔会出现图片有错,打开图片的时候报错:因存在错误而无法显示。

代码如下:

function imgUpload(img2,id) {

html2canvas($("#imgArea")[0]).then((canvas) => {

var img1 = canvas.toDataURL();

var data = new FormData();

data.append("ImgFile", dataURLtoFile(img1, "authorize.png"));

data.append("ImgFile2", dataURLtoFile(img2, "authorizeName.png"));

var ajaxRequest = $.ajax({

type: "POST",

url: "/api/authorize/save?id=" + id,

contentType: false,

processData: false,

data: data

});

ajaxRequest.done(function (param) {

});

})

}

function dataURLtoFile(dataurl, filename) {

var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],

bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);

while (n--) {

u8arr[n] = bstr.charCodeAt(n);

}

return new File([u8arr], filename, { type: mime });

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在SSM框架中使用Ajax实现图片上传到服务器、显示以及选择图片之后在前端显示的功能,可以按照以下步骤进行操作: 1. 在前端页面中添加一个上传图片的input标签,并使用Ajax图片上传到后台Controller中。 2. 在Controller中使用SpringMVC的文件上传功能,将图片保存到服务器指定的路径中。 3. 在Controller中返回图片的访问路径,然后使用Ajax在前端页面中显示图片。 4. 如果需要实现选择图片之后在前端页面中显示,可以使用jQuery的Ajax和HTML5的File API来实现。首先,在前端页面中添加一个显示图片的img标签,然后通过jQuery选择文件,使用Ajax将文件上传到后台Controller中。在Controller中使用SpringMVC的文件上传功能,将图片保存到服务器指定的路径中。最后,在Controller中返回图片的访问路径,并使用File API在前端页面中显示图片。 具体实现细节参考以下代码: 前端页面: ```html <input type="file" id="fileUpload" name="fileUpload"/> <img id="preview" src="" style="display:none;"/> <script> $(function() { // 选择图片显示预览图 $("#fileUpload").change(function() { var file = this.files[0]; var reader = new FileReader(); reader.onload = function(e) { $("#preview").attr("src", e.target.result); $("#preview").show(); } reader.readAsDataURL(file); // 使用Ajax上传图片 var formData = new FormData(); formData.append("file", file); $.ajax({ url: "uploadImage", type: "POST", data: formData, contentType: false, processData: false, success: function(data) { // 显示上传的图片 $("#preview").attr("src", data); } }); }); }); </script> ``` 后台Controller: ```java @Controller public class ImageController { @RequestMapping(value="/uploadImage", method=RequestMethod.POST) @ResponseBody public String uploadImage(@RequestParam("file") MultipartFile file) { String fileName = UUID.randomUUID().toString() + ".jpg"; String filePath = "upload/" + fileName; try { // 保存图片到服务器 file.transferTo(new File(filePath)); // 返回图片的访问路径 return filePath; } catch (Exception e) { e.printStackTrace(); return ""; } } } ``` 注意事项: 1. 在Controller中需要添加`@ResponseBody`注解,将返回值转换成JSON格式。 2. 在前端页面中需要添加jQuery和File API的引用。 3. 在服务器中需要设置文件上传的临时目录和上传文件的大小限制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值