通过base64字符串之间的编码解码实现图片上传
来源:互联网 发布:小天才手表没有网络 编辑:程序博客网 时间:2024/05/17 10:09
需要的jar包
BASE64Decoder.jar
html模块
选择文件:<input type="file" id="fileName" name="fileName">
js模块
function uploadPic() {//获取File文件var file = document.getElementById('fileName').files[0];//声明一个文件流var reader = new FileReader();//如果文件不为null则开始读取2进制数据到文件流(reader)里面if (file) {reader.readAsDataURL(file);}reader.onload = function() {//文件大小var fileSize = file.size//最大文件大小var maxSize = 10 * 1024 * 1024;//限制文件大小if (fileSize > maxSize) {mui.alert('上传文件大小超过限制(最大4M)')} else {//把二进制转成base64编码字符串var base64 = reader.result.split(',')[1];reader.fileSize//二进制提交到后台处理,并返回图片地址$.ajax({url : 'User/Info',type : 'POST',dataType : 'json',data : {'fileName' : base64},success : function(data) {alert("上传成功");},error : function() {alert('上传失败');}})//var dataUrl = 'data:image/png;base64,' + base64;//placeholder.style.backgroundImage = 'url(' + dataUrl + ')';}reader.onerror = function() {alert('图片加载出错');}}}
java模块
public void Info(HttpServletRequest request, HttpServletResponse response) throws Exception{//设置编码格式response.setCharacterEncoding("utf-8");//获取前台传来的Base64解码字符串String fw=request.getParameter("fileName");//创建一个 BASE64Decoder对象(用来解码) BASE64Decoder decoder = new BASE64Decoder(); //把字符串进行解码成二进制 byte[] b = decoder.decodeBuffer(fw); //调整异常数据 for(int i=0;i<b.length;++i) { if(b[i]<0) { b[i]+=256; } } //生成一个jpg图片 String imgFilePath = "d://222.jpg";//新生成的图片 //获取图片的输出流 OutputStream out = new FileOutputStream(imgFilePath); //把二进制的数据写入图片中 out.write(b); out.flush(); out.close(); //返回一个json字符串 PrintWriter pw=response.getWriter(); pw.write("{\"msg\":\"上传成功\"}"); pw.flush(); pw.close();}
阅读全文
0 0
- 通过base64字符串之间的编码解码实现图片上传
- Base64编码、解码的实现
- Base64编码、解码的实现
- Base64编码、解码的实现
- Base64编码、解码的实现
- 【C#】图片的Base64编码和解码
- C#图片的Base64编码和解码
- PHP解码base64编码的图片例
- 将BASE64编码的字符串进行解码
- base64编码的文本 转为 图片 实现上传保存
- Base64编码解码和URLEnocde编码解码的C实现
- base64编码解码的实现(C语言)
- C# 实现Base64的编码/解码
- JavaScript实现的Base64编码和解码
- JavaScript实现的Base64编码和解码
- C# 实现Base64的编码/解码(转载)
- base64编码解码的实现(C语言)
- JavaScript实现的Base64编码和解码
- TRUNCATE的用法,以及与delete的对比
- jQuery验证控件jquery.validate.js使用说明+中文API
- 监控指定进程
- Zeppelin执行SparkSQL长时间无响应
- 如何停止Handler的消息队列
- 通过base64字符串之间的编码解码实现图片上传
- 【SSLGZ 1344】Knights
- 机器视觉开源代码集合(转)
- java中==和equals的区别以及java中的堆栈
- POJ
- Maven项目导入到eclipse中
- jmeter.bat启动时提示:'findstr' 不是内部或外部命令,也不是可运行的程序或批处理文件。
- 8.6-全栈Java笔记:Math类和枚举
- C++泛型函数模板类型