博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Java】【SpringBoot】基于BASE64的图片上传、存储
阅读量:5957 次
发布时间:2019-06-19

本文共 3287 字,大约阅读时间需要 10 分钟。

前台

上传控件:

<input type="file" class="custom-file-input" id="
homeImg" name='homeImg'/>
 
JS提交:
//保存图片信息      $scope.save = function () {        var fd = new FormData();        var file = document.getElementById('homeImg').files[0];        fd.append('homeImg', file);        $http.post(CommonConfig.RestBaseUrl.CaoBaoService + 'homeimgs/upload?id=' + $scope.detailInfo.id + '&sortNum=' + $scope.detailInfo.sortNum, fd, CommonConfig.fileUploadReqConfig)          .then(function (result) {  //正确请求成功时处理            console.log('save:result', result);            if (result.data.code == 'NONE_ERROR') {              $scope.modalContent = '保存成功!';              $('#myModal').modal('show');              $scope.getHomeImgs($scope.detailInfo.id);              $scope.resetDetailInfo();            }            else {              $scope.modalContent = '保存失败!';              $('#myModal').modal('show');            }          }).catch(function (result) { //捕捉错误处理            console.log(result);          });      };

请求参数设置:

CommonConfig.
fileUploadReqConfig = {
headers: {
'Content-Type'
:
undefined },
transformRequest:
angular.
identity
};

 

前台展示:

<
img
src=
"data:image/png;base64,{
{viewImgData}}"
width=
"100%"
height=
"100%"
alt=
"无法显示"
/>

 

后台

后台Model中用String存储即可。

数据库采用MediumBlob类型。

后台Rest请求处理:

import org.apache.commons.codec.binary.Base64; @PostMapping(value = "/upload")    public RestRsp
upload(HttpServletRequest request, @RequestParam @Nullable int sortNum, @RequestParam @Nullable String id) { RestRsp
result = new RestRsp
(); HomeImgsMO mo = null; try { List
files = ((MultipartHttpServletRequest) request).getFiles("homeImg"); if (StringUtil.isNotEmpty(id)) { mo = homeImgsBusiness.getById(id); mo.setSortNum(sortNum); if (CollectionUtil.isNotEmpty(files)) { mo.setImgData(Base64.encodeBase64String(files.get(0).getBytes())); } homeImgsBusiness.modify(mo); } else { if (CollectionUtil.isEmpty(files)) { throw new LittleCatException("upload home img:img is null."); } mo = new HomeImgsMO(); mo.setSortNum(sortNum); mo.setImgData(Base64.encodeBase64String(files.get(0).getBytes())); result.getData().add(homeImgsBusiness.add(mo)); } } catch (LittleCatException e) { result.setCode(e.getErrorCode()); result.setMessage(e.getMessage()); logger.error(e.getMessage(), e); } catch (Exception e) { result.setCode(Consts.ERROR_CODE_UNKNOW); result.setMessage(e.getMessage()); logger.error(e.getMessage(), e); } return result; }

POM:

<dependency>

<groupId>commons-codec</groupId>

<artifactId>commons-codec</artifactId>

<version>1.11</version>

</dependency>

 

提交数据库操作:

public static final String CHARSET_NAME = "utf-8";

new SerialBlob(mo.getImgData().getBytes(Consts.CHARSET_NAME))

 

转载于:https://www.cnblogs.com/njlittlecat/p/9963943.html

你可能感兴趣的文章
JPA 2.2改进了易用性
查看>>
从蚂蚁金服实践入手,带你深入了解 Service Mesh
查看>>
24周年,“常青树”Delphi发布新版本10.3.1
查看>>
7. 从数据库获取数据- 从零开始学Laravel
查看>>
阿里百川码力APP监控 来了!
查看>>
使用dotenv管理环境变量
查看>>
温故js系列(11)-BOM
查看>>
Vuex学习
查看>>
bootstrap - navbar
查看>>
切图崽的自我修养-[ES6] 编程风格规范
查看>>
[React Native Android 安利系列]样式与布局的书写
查看>>
服务器迁移小记
查看>>
FastDFS存储服务器部署
查看>>
Android — 创建和修改 Fragment 的方法及相关注意事项
查看>>
流程控制: jQ Deferred 与 ES6 Promise 使用新手向入坑!
查看>>
swift基础之_swift调用OC/OC调用swift
查看>>
Devexpress 15.1.8 Breaking Changes
查看>>
推荐JS插件:imagesLoaded,监测图片加载情况并提供相应的事件(加载成功/失败)...
查看>>
Java B2B2C多用户商城 springcloud架构- common-service 项目构建过程(七)
查看>>
杨老师课堂之ArrayList集合常用方法解析
查看>>