ajax java base64 图片储存
2024-08-29 21:21:13
js代码
//利用formdata上传
var dataUrl = $('#canvas').getDataUrl();
var img = $('<img>').attr('src', dataUrl); //显示图片
var oMyForm = new FormData(); //创建formdata
var blobBin = dataURLtoBlob(dataUrl); //base64转换blob
oMyForm.append("blobObject", blobBin); //想formData添加blob数据
$.ajax({
url: $.getUrl()+"activity/updateImg",
type: "POST",
data: oMyForm,
async: false,
cache: false,
contentType: false,
processData: false,
success: function (msg) {
console.log("yes");
}
}); //**dataURL to blob** dataURL转换blob
function dataURLtoBlob(dataurl) {
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 Blob([u8arr], { type: mime });
}
java代码
//spring mvc
@RequestMapping(value="updateImg",method=RequestMethod.POST)
public void upLoad(HttpServletRequest request,HttpServletResponse response) throws IOException {
System.out.println("enter...");
// 从请求中获取到文件信息需要将请求转换为MultipartHttpServletRequest类型
MultipartHttpServletRequest MulRequest = request instanceof MultipartHttpServletRequest ? (MultipartHttpServletRequest) request : null;
Iterator<String> fileNames = MulRequest.getFileNames();
byte[] imgByte = null;
if (fileNames.hasNext()) { // 遍历请求中的图片信息
String fileName = fileNames.next(); // 图片对应的参数名
MultipartFile file = MulRequest.getFile(fileName); // 获取到图片
if (file != null) {
System.out.println("file.getSize():" + file.getSize()); // 图片大小
imgByte=file.getBytes();// 可以获取到图片的字节数组
}
} for(int i=0;i<imgByte.length;++i)
{
if(imgByte[i]<0)
{//调整异常数据
imgByte[i]+=256;
}
}
//生成jpeg图片
String imgFilePath = "d://222.jpg";//新生成的图片
OutputStream out = new FileOutputStream(imgFilePath);
out.write(imgByte);
out.flush();
out.close();
}
最新文章
- 利用history实现无刷新跳转界面
- 【转】WPF DataGrid 获取选中的当前行某列值
- 写在最前面 - 每天5分钟玩转 OpenStack(1)
- PHP操作MongoDB学习笔记
- stm32cube--串口
- 没有好看的 Terminal 怎么能够快乐地写代码
- MVVM了解
- Codeforces Round #319 (Div. 1) C. Points on Plane 分块
- Introduction to SignalR -摘自网络
- EditPlus3.3 集成 SVN
- ZH奶酪:Ionic中(弹出式窗口)的$ionicModal使用方法
- SQL 查询中case的运用
- 如何使用多数据源,同时使用jpa和jdbctemplate
- 在Windows系统下安装Beautiful Soup4的步骤和方法
- 在 Linux 上如何挂载 qcow2 磁盘镜像
- 使用XPath对象解析xml文件
- python模块--pickle&;json&;shelve
- 【数论Day1】 最大公约数(gcd)题目
- SQL中的全局变量和局部变量(@@/@)
- 关于XCode更换项目名称