spring mvc 附件上传至腾讯云qcloud
简单记录主要是便于自己用,有需要的参考一下...
上传至腾讯云,相关文档参阅官方文档
附件为比较早的版本,自己修改过
1、实体bean --用multipartFile接收
public class UploadForm {
//上传的图片
private MultipartFile PhotoFile;
public MultipartFile getPhotoFile() {
return PhotoFile;
}
public void setPhotoFile(MultipartFile photoFile) {
PhotoFile = photoFile;
}
}
2、controller
@RequestMapping(value="/uploadImage")
@ResponseBody
public String uploadImage(UploadForm uploadForm,Model model ){
return uploadService.uploadImage(uploadForm,model);
}
3、service
@Transactional
public String uploadImage(UploadForm uploadForm,Model model ){
//图片类型
String imageType = siteForm.getImageType();
MultipartFile uploadFile = siteForm.getPhotoFile();
UploadResult result = PicUploadUtil.picUploadByFileAstrict(uploadFile, 1920, 572, 0, new String[]{"jpg","jpeg","png"}, false);
if(result.result != 0)
return "2";
//将图片信息保存到数据库
CtAttachment attachmentExample = new CtAttachment();
attachmentExample.setUserId(SecurityUserHelper.getCurrentUser().getPersonId());
attachmentExample.setAttCode(imageType);
attachmentExample.setAttName(uploadFile.getOriginalFilename());
attachmentExample.setAttUrl(result.download_url);
this.ctAttachmentDAO.insertNotNull(attachmentExample);
return result.download_url;
}
4、PicUploadUtil
/**
* 图片上传
* @param file
* @param width 宽度限制 <=0表示不校验
* @param height 高度限制 <=0表示不校验
* @param size 大小限制 <=0表示不校验
* @param suffix 后缀限制 null或length<0表示不校验
* @param needCompress 是否需要压缩
* @return
*/
public static UploadResult picUploadByFileAstrict(MultipartFile file,int width,int height,long size,String [] suffix,boolean needCompress) {
UploadResult result = new UploadResult();
try {
String imgName = file.getOriginalFilename();
String imgSuffix = imgName.substring(imgName.lastIndexOf(".") + 1);
//不用添加后缀
String imgNameTemp = UUID.randomUUID().toString();
File fileTemp = new File(picTempDir + imgNameTemp);
//这里只使用路径,而不创建真实文件,所有也不用考虑删除文件的问题
if(fileTemp.exists()){
log.error("target file is exists , create fail !");
result.result = -1;
return result;
}
byte[] advImageBytes = null;
InputStream advImageStream = null;
advImageStream = file.getInputStream();
advImageBytes = FileCopyUtils.copyToByteArray(advImageStream);
FileCopyUtils.copy(advImageBytes, fileTemp);
advImageStream.close();
BufferedImage buff = ImageIO.read(fileTemp);
if((width > 0 ? buff.getWidth() > width : false) || (height > 0 ? buff.getHeight() > height : false) ||
(size > 0 ?file.getSize() > size : false) || ((null != suffix&&suffix.length>0)?!ArrayUtils.contains(suffix, imgSuffix):false)){
//TODO 如果需要压缩,则直接压缩到指定大小,不用校验
/*//返回之前先删除添加的文件,
fileTemp.delete();*/
result.result = 1;
return result;
}
PicCloud pc = new PicCloud(APP_ID, SECRET_ID, SECRET_KEY);
int ret = pc.UploadByFile("", fileTemp, result);
if(ret == 0){
result.result = 0;
}else{
result.result = -1;
}
return result;
} catch (Exception e) {
log.error(e);
}
return null;
}
5、jsp页面
<div id="updateBox" style="display:none;">
<input style="border:0;width:190px;" type="file" id="PhotoFile" name="PhotoFile"/>
<button class="leeer" type="button" οnclick="addPhoto(<c:out value='${model.id }'/>);">上传图片</button>
<!--<button class="leeer" οnclick="updateImg(1);return false;">关闭</button>
--></div>
6、spring-mvc 配置
<!-- SpringMVC上传文件时,需要配置MultipartResolver处理器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 指定所上传文件的总大小不能超过200KB。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
<property name="maxUploadSize" value="10000000"/>
</bean>
<!-- SpringMVC在超出上传文件限制时,会抛出org.springframework.web.multipart.MaxUploadSizeExceededException -->
<!-- 该异常是SpringMVC在检查上传的文件信息时抛出来的,而且此时还没有进入到Controller方法中 -->
<bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<!-- 遇到MaxUploadSizeExceededException异常时,自动跳转到error_fileupload.jsp页面 -->
<prop key="org.springframework.web.multipart.MaxUploadSizeExceededException">error_fileupload</prop>
</props>
</property>
</bean>
spring mvc 附件上传至腾讯云qcloud相关推荐
- spring mvc文件上传小例子
spring mvc文件上传小例子 1.jsp页面 <%@page contentType="text/html;charset=UTF-8"%> <%@page ...
- Spring MVC实现上传文件报错解决方案
Spring MVC实现上传文件报错解决方案 参考文章: (1)Spring MVC实现上传文件报错解决方案 (2)https://www.cnblogs.com/liuling/p/2014-3-5 ...
- spring mvc(注解)上传文件的简单例子
spring mvc(注解)上传文件的简单例子,这有几个需要注意的地方 1.form的enctype="multipart/form-data" 这个是上传文件必须的 2.appl ...
- Spring MVC文件上传示例教程 - 单个和多个文件
Spring MVC文件上传示例教程 - 单个和多个文件 文件上传是任何Web应用程序中非常常见的任务.我们之前已经看过如何在Servlet和Struts2文件上传中上传文件.今天我们将学习Sprin ...
- Spring MVC 如何上传多个文件到指定位置
Spring MVC 如何上传多个文件到指定位置 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公 ...
- 拉取ftp服务器上的文件_winscp和云服务器,2步实现winscp将文件上传到腾讯云Linux云服务器...
WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端.同时支持SCP协议,它的主要功能就是在本地与远程计算机间安全的复制文件.与使用FTP上传代码相比,通过WinSCP可以直接使 ...
- 上传excel腾讯云服务器,使用SpringBoot上传文件到腾讯云
最近在做一个项目,涉及到腾讯云上传文件/图片到服务器,为了图方便并且提升访问速度,想着上传到腾讯云存储桶是一个不错的选择.腾讯云存储桶的创建可见我之前的文章. 当然存储桶里面不仅可以存图片,也可以存储 ...
- html5 dzzxjbd cn,UEditor实现单张图片上传至腾讯云(对象存储服务)功能(html5
UEditor文件上传默认只支持后端语音,因为项目是前后端分离开发,所以需要前端自行实现图片上传. 这里是直接修改的 ueditor/ueditor.all.js文件 ueditor.all.js中找 ...
- Java导出Excel文档(poi),并上传到腾讯云对象存储服务器
需求 后台生成周报月报季报年报Excel,将文件下载链接推送给对应客户 开发思路: 1.根据选定日期生成周报,月报,季报,年报数据 2.将这些数据报告生成Excel表格 3.把生成的文件上传到腾讯云对 ...
最新文章
- 简单探讨TypeScript 枚举类型
- BZOJ3992:[SDOI2015]序列统计——题解
- 基于Mahout的电影推荐系统
- redis在linux下安装并測试(在spring下调用)
- python响铃符不响_python语法注意事项
- 理解一条语句:SELECT difference(sum(value)) FROM mq_enqueue WHERE channel =~ /ActiveMQ_TEST/ AND $tim...
- NFS PersistentVolume - 每天5分钟玩转 Docker 容器技术(151)
- 函数指针指向类的静态成员函数
- cookie 百科_cookie是什么
- linux文件存储管理,深入探讨Linux文件系统管理小结
- 【BZOJ1834】【codevs1362】网络扩容,最大流+费用流
- Visual Studio Code 1.45 发布
- fetch与XHR的区别与优势
- 捆网包裹行业调研报告 - 市场现状分析与发展前景预测
- Lodop打印旋转180度 倒着打
- Dijkstra算法,起点到当前点的最短距离及路径 C++实现
- 浅谈数学在c语言编程中的,试论C语言程序设计中算法设计的作用
- 红米k50 至尊版 解锁bl 获取root教程步骤
- SQL查询中笛卡尔积的巧妙使用(文末福利)
- 华为海思K3平台总体特性