@ResponseBody
@RequestMapping("/upload")
public String upload(HttpServletRequest request, @RequestParam(value = "uploadfile") MultipartFile file,
@RequestParam(value = "policyno", required = false)String policyno) {
AjaxResult Result = new AjaxResult();
Result.setStatus(HttpStatus.SC_OK);
FileUpload fileUpload = new FileUpload();
fileUpload.setPolicyno(policyno);
int count = fileUploadService.queryCount(fileUpload);
if (count >= 5) {
Result.setStatusText("上传文件过多:只能上传5个的文件");
return JSON.toJSONString(Result);
}
InputStream is = null;
String name = file.getOriginalFilename();
if (!file.isEmpty() && file.getSize() > 0) {
System.out.println("文件长度: " + file.getSize());
System.out.println("文件类型: " + file.getContentType());
System.out.println("文件名称: " + file.getName());
System.out.println("文件原名: " + name);
System.out.println("========================================");
if (file.getSize() > 1024 * 1024 * 2) {
Result.setStatus(HttpStatus.SC_OK);
Result.setStatusText("上传失败:只能上传小于 2 M 的文件");
Result.setData(name);
return JSON.toJSONString(Result);
}
try {
is = file.getInputStream();
byte[] fileByte = toByteArray(is);
FileUpload fileU = new FileUpload();
fileU.setAttachment(fileByte);//该字段对应的数据库类型为mediumblob,最大4M
fileU.setFilename(name);
fileU.setInsertdate(new Date());
fileU.setUpdatedate(new Date());
fileU.setDeleted("false");
fileU.setType("claim");
fileU.setContentType(file.getContentType());
fileU.setPolicyno(policyno);
fileU.setId(UUID.randomUUID().toString());
boolean flag = fileUploadService.insertFile(fileU);
if (flag) {
Result.setStatusText("上传成功");
}else {
Result.setStatusText("上传失败");
}
Result.setData(name);
} catch (FileNotFoundException e) {
logger.error(e.getMessage(), e);
} catch (IOException e) {
logger.error(e.getMessage(), e);
} finally {
try {
// 关闭输入流
if (null != is) {
is.close();
}
} catch (IOException e) {
logger.error(e.getMessage(), e);
}
}
} else {
Result.setStatusText("未选择文件");
}
return JSON.toJSONString(Result);
}
private static byte[] toByteArray(InputStream input) throws IOException {
ByteArrayOutputStream output = new ByteArrayOutputStream();
copy(input, output);
return output.toByteArray();
}

private static int copy(InputStream input, OutputStream output) throws IOException {
long count = copyLarge(input, output);
if (count > 2147483647L) {
return -1;
}
return (int) count;
}

private static long copyLarge(InputStream input, OutputStream output) throws IOException {
byte[] buffer = new byte[4096];
long count = 0L;
int n = 0;
while (-1 != (n = input.read(buffer))) {
output.write(buffer, 0, n);
count += n;
}
return count;
}

图片,word,Excel等附件上传的更多相关文章

  1. 循序渐进VUE+Element 前端应用开发(23)--- 基于ABP实现前后端的附件上传,图片或者附件展示管理

    在我们一般系统中,往往都会涉及到附件的处理,有时候附件是图片文件,有时候是Excel.Word等文件,一般也就是可以分为图片附件和其他附件了,图片附件可以进行裁剪管理.多个图片上传管理,及图片预览操作 ...

  2. 百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程之更改图片和附件上传路径

    本文是接上一篇博客,如果有疑问请先阅读上一篇:百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程 默认UEditor上传图片的路径是,编辑器包目录里面的net目录下 下面就演示如 ...

  3. Springmvc file多附件上传 显示 删除操作

    之前项目需求要做一个多附件上传 并显示上传文件 带删除操作 一筹莫展之际搜到某个兄弟发的博客感觉非常好用被我copy下来了此贴算是改良版 再次感谢(忘记叫什么了时间也有点久没有历史记录了)先上图 基于 ...

  4. 附件上传vue组件封装(一)

    //父页面部分 <attachment @newFileList="newFileList" :operationType="operationType" ...

  5. asp.net结合uploadify实现多附件上传

    1.说明 uploadify是一款优秀jQuery插件,主要功能是批量上传文件.大多数同学对多附件上传感到棘手,现将asp.net结合uploadfiy如何实现批量上传附件给大家讲解一下,有什么不对的 ...

  6. tp中附件上传文件,表单提交

    public function tianjia(){ $goods=D('Goods'); if(!empty($_POST)){ if($_FILES['f_goods_image']['error ...

  7. dedecms 5.7文章编辑器附件上传图标不显示

    我最近发现在使用dedecms 5.7文章编辑器附件上传图标不显示了,以前是没有问题的,这个更新系统就出来问题了,下面我来给大家分享此问题解决办法.   问题bug:在dedecms 5.7中发现了一 ...

  8. java 附件上传、下载前后端代码

    前言:业务需要:附件上传,需要同时满足浏览器上传,和APP上传附件,并且浏览器端不可使用form表单提交,因为表单提交无法直接获取返回值,除非刷新页面才可显示上传的附件.所以此处使用ajaxfileu ...

  9. [转载]Java动态填充word文档并上传到服务器

    一. 需求背景 在一些特殊应用场合,客户希望在服务器上生成文档的同时并填充数据,客户端的页面不显示打开文档,但是服务器上生成文档对服务器压力很大,目前服务器上生成文档第一种就是方式是jacob, 但是 ...

随机推荐

  1. 使用layui iframe弹层,各弹层之前的传值问题

    最近做一个后台管理系统,用到的layui,主要是使用它的弹层,但是各个弹层之前的传值经常容易搞晕,写个个博客记录一下,方便自己,也方便别人, 首先我的页面已经嵌套了好几个iframe页面了,嵌套了三个 ...

  2. Node.js 版本管理工具——nvm

    日常项目开发中,有些项目可能基于node  V10 或者 V8 不同的版本: 如果我们手动安装卸载node,这样是不友好. 先放上作者的博客地址 : https://www.cnblogs.com/g ...

  3. F5设备部署

    旁挂组网(组网模式一) 所谓旁挂组网模式,就是指在BIG-IP LTM上只配置一个Vlan,使用一个端口(或者Trunk端口)连接在网络中,所有的处理均在这一个Vlan中运行.通常有三种常见配置模式. ...

  4. PHP生成静态网页的方法

    看到很多朋友在各个地方发帖问PHP生成静态文章系统的方法,以前曾做过这样一个系统,遂谈些看法,以供各位参考.兄弟先带大家回顾一些基本的概念. 一,PHP脚本与动态页面. PHP脚本是一种服务器端脚本程 ...

  5. Leetcode 17. Letter Combinations of a Phone Number(水)

    17. Letter Combinations of a Phone Number Medium Given a string containing digits from 2-9 inclusive ...

  6. 设计模式学习笔记——Adapter 适配器模式

    适配器设计模式的适应场景: 一般情况是上端固定,下端固定,下端功能不满足或跟上端不协调,使用适配器重新包一层(继承适配器接口,以满足上端需求,继承下层类,以调用方法),使下端代码能满足上端需求(欺骗, ...

  7. Java称霸编程语言排行榜

    笔者精挑细选了本周研发频道的热门看点,供您在这个周末阅读欣赏.内容涵盖TIOBE编程语言8月份排行榜.开源挑战.WebGL演示.HTML5在线工具.IT职业身涯的14个建议,还有即将举行的SDCC(中 ...

  8. Qt 之 ZIP开源库 QuaZIP

    2013-10-31 21:46 10856人阅读 评论(0) 收藏 举报  分类: Qt(12)  版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   一.简介     ...

  9. 非web工程,打jar放shell执行

    作为6年经验的程序员,一直在搞web服务应用开发,今天领导被吐槽了,只会web方面的东东,最基本的打包啥啥都不会.. 一般开发工程都是web项目,突然要求开发非web,不用tomcat装(浪费端口号) ...

  10. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_09 序列化流_2_对象的序列化流_ObjectOutputStream

    创建person对象.生成构造方法全参和无参.getter和setter 抛出异常:没有序列化异常 接口的源码 啥都没有.就起到一个标记的作用 用二进制存的