时间:2021-07-01 10:21:17 帮助过:8人阅读
处理过程(handprocess)和附件表(annex)一对多关系,一条处理过程可以有多个附件
除了springmvc+hibernate+spring的jar,还需要
commons-fileupload-1.3.1.jar
commons-io-2.0.1.jar
数据库保存上传文件内容使用mediumblob类型
mysql保存数据库二进制文件使用blob类型,其大小如下
- TinyBlob 最大 <span style="color: #800080;">255</span><span style="color: #000000;">
- Blob 最大 65K
- MediumBlob 最大 16M
- LongBlob 最大 4G</span>
springmvc中需添加配置文件
- <bean id=<span style="color: #800000;">"</span><span style="color: #800000;">multipartResolver</span><span style="color: #800000;">"</span>
- <span style="color: #0000ff;">class</span>=<span style="color: #800000;">"</span><span style="color: #800000;">org.springframework.web.multipart.commons.CommonsMultipartResolver</span><span style="color: #800000;">"</span>>
- <property name=<span style="color: #800000;">"</span><span style="color: #800000;">maxUploadSize</span><span style="color: #800000;">"</span> value=<span style="color: #800000;">"</span><span style="color: #800000;">10000000</span><span style="color: #800000;">"</span>></property> <!-- <span style="color: #0000ff;">byte</span> -->
- <property name=<span style="color: #800000;">"</span><span style="color: #800000;">defaultEncoding</span><span style="color: #800000;">"</span> value=<span style="color: #800000;">"</span><span style="color: #800000;">utf-8</span><span style="color: #800000;">"</span> />
- </bean>
其中maxUploadSizes的大小是上传文件大小,单位:字节
实体:
- <span style="color: #000000;">package com.h3c.zgc.upload;
- import javax.persistence.Column;
- import javax.persistence.Entity;
- import javax.persistence.Id;
- import javax.persistence.Table;
- </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
- * 附件 和处理过程多对一
- * @author GoodLuck
- *
- </span><span style="color: #008000;">*/</span><span style="color: #000000;">
- @Entity
- @Table(name</span>=<span style="color: #800000;">"</span><span style="color: #800000;">annex</span><span style="color: #800000;">"</span>,catalog=<span style="color: #800000;">"</span><span style="color: #800000;">itac</span><span style="color: #800000;">"</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> Annex {
- @Id
- @Column(name</span>=<span style="color: #800000;">"</span><span style="color: #800000;">id</span><span style="color: #800000;">"</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Long id;
- </span><span style="color: #008000;">//</span><span style="color: #008000;">上传文件的名称</span>
- @Column(name=<span style="color: #800000;">"</span><span style="color: #800000;">realName</span><span style="color: #800000;">"</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String realName;
- </span><span style="color: #008000;">//</span><span style="color: #008000;">上传文件的内容</span>
- @Column(name=<span style="color: #800000;">"</span><span style="color: #800000;">fileContent</span><span style="color: #800000;">"</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">byte</span><span style="color: #000000;">[] fileContent;
- </span><span style="color: #008000;">//</span><span style="color: #008000;">处理过程的id</span>
- @Column(name=<span style="color: #800000;">"</span><span style="color: #800000;">handId</span><span style="color: #800000;">"</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Long handId;
- </span><span style="color: #008000;">//</span><span style="color: #008000;">客户id</span>
- @Column(name=<span style="color: #800000;">"</span><span style="color: #800000;">customerId</span><span style="color: #800000;">"</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Long customerId;
- </span><span style="color: #008000;">//</span><span style="color: #008000;">getter and setter ...</span>
- <span style="color: #000000;">
- }</span>
- <span style="color: #000000;">package com.h3c.zgc.upload;
- import javax.persistence.Column;
- import javax.persistence.Entity;
- import javax.persistence.Id;
- import javax.persistence.Table;
- import javax.persistence.Transient;
- @Entity
- @Table(name</span>=<span style="color: #800000;">"</span><span style="color: #800000;">handprocess</span><span style="color: #800000;">"</span>,catalog=<span style="color: #800000;">"</span><span style="color: #800000;">itac</span><span style="color: #800000;">"</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> HandProcess {
- @Id
- @Column(name</span>=<span style="color: #800000;">"</span><span style="color: #800000;">id</span><span style="color: #800000;">"</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Long id;
- @Column(name</span>=<span style="color: #800000;">"</span><span style="color: #800000;">handTime</span><span style="color: #800000;">"</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> Long handTime;
- @Column(name</span>=<span style="color: #800000;">"</span><span style="color: #800000;">handName</span><span style="color: #800000;">"</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String handName;
- @Column(name</span>=<span style="color: #800000;">"</span><span style="color: #800000;">reason</span><span style="color: #800000;">"</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String reason;
- @Column(name</span>=<span style="color: #800000;">"</span><span style="color: #800000;">annexStr</span><span style="color: #800000;">"</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String annexStr;
- @Transient
- </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> String handTimeStr;
- </span><span style="color: #008000;">//</span><span style="color: #008000;">getter and setter ...</span>
- <span style="color: #000000;">
- }</span>
dao层
- <span style="color: #000000;">package com.h3c.zgc.upload;
- import java.io.Serializable;
- import java.util.List;
- import javax.annotation.Resource;
- import org.hibernate.SQLQuery;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.transform.Transformers;
- import org.springframework.orm.hibernate4.support.HibernateDaoSupport;
- import org.springframework.stereotype.Repository;
- @Repository
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> UploadDownDao extends HibernateDaoSupport{
- @Resource
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span> <span style="color: #0000ff;">set</span><span style="color: #000000;">(SessionFactory sessionFactory){
- </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.setSessionFactory(sessionFactory);
- }
- </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Session getSession(){
- </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">this</span><span style="color: #000000;">.getSessionFactory().openSession();
- }
- </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
- * 获取附件id最大值
- </span><span style="color: #008000;">*/</span>
- <span style="color: #0000ff;">public</span><span style="color: #000000;"> Long getMaxIdOfAnnex(){
- List l </span>= <span style="color: #0000ff;">this</span>.getHibernateTemplate().find(<span style="color: #800000;">"</span><span style="color: #800000;">select max(id) from Annex</span><span style="color: #800000;">"</span><span style="color: #000000;">);
- System.</span><span style="color: #0000ff;">out</span><span style="color: #000000;">.println(l);
- </span><span style="color: #0000ff;">if</span>(l!=<span style="color: #0000ff;">null</span>&&l.size()==<span style="color: #800080;">1</span>&&l.<span style="color: #0000ff;">get</span>(<span style="color: #800080;">0</span>)!=<span style="color: #0000ff;">null</span><span style="color: #000000;">){
- </span><span style="color: #0000ff;">return</span> (Long) l.<span style="color: #0000ff;">get</span>(<span style="color: #800080;">0</span><span style="color: #000000;">);
- }
- </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">0L</span><span style="color: #000000;">;
- }
- </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
- * 获取处理过程id最大值
- * @return
- </span><span style="color: #008000;">*/</span>
- <span style="color: #0000ff;">public</span><span style="color: #000000;"> Long getMaxIdOfHandProcess(){
- List l </span>= <span style="color: #0000ff;">this</span>.getHibernateTemplate().find(<span style="color: #800000;">"</span><span style="color: #800000;">select max(id) from HandProcess</span><span style="color: #800000;">"</span><span style="color: #000000;">);
- System.</span><span style="color: #0000ff;">out</span><span style="color: #000000;">.println(l);
- </span><span style="color: #0000ff;">if</span>(l!=<span style="color: #0000ff;">null</span>&&l.size()==<span style="color: #800080;">1</span>&&l.<span style="color: #0000ff;">get</span>(<span style="color: #800080;">0</span>)!=<span style="color: #0000ff;">null</span><span style="color: #000000;">){
- </span><span style="color: #0000ff;">return</span> (Long) l.<span style="color: #0000ff;">get</span>(<span style="color: #800080;">0</span><span style="color: #000000;">);
- }
- </span><span style="color: #0000ff;">return</span> <span style="color: #800080;">0L</span><span style="color: #000000;">;
- }
- </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
- * 保存附件
- * @param annex
- * @return
- </span><span style="color: #008000;">*/</span>
- <span style="color: #0000ff;">public</span><span style="color: #000000;"> Serializable saveAnnex(Annex annex){
- </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">this</span><span style="color: #000000;">.getHibernateTemplate().save(annex);
- }
- </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
- * 保存处理过程
- * @param hp
- * @return
- </span><span style="color: #008000;">*/</span>
- <span style="color: #0000ff;">public</span><span style="color: #000000;"> Serializable saveHandProcess(HandProcess hp){
- </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">this</span><span style="color: #000000;">.getHibernateTemplate().save(hp);
- }
- </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
- * 获取处理过程列表,左连接查询
- * @return
- </span><span style="color: #008000;">*/</span>
- <span style="color: #0000ff;">public</span> List getHandProcessList(){<span style="color: #008000;">//</span><span style="color: #008000;">有没有可能没有附件,附件annex,处理过程handprocess</span>
- SQLQuery query = <span style="color: #0000ff;">this</span>.getSession().createSQLQuery(<span style="color: #800000;">"</span><span style="color: #800000;">select h.id handprocessId,h.annexStr annexStr,a.id annexId,a.realName realName,h.handTime handTime,h.handName handName,h.reason reason from handprocess h left join annex a on a.handId=h.id</span><span style="color: #800000;">"</span><span style="color: #000000;">);
- query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
- List list </span>=<span style="color: #000000;"> query.list();
- </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> list;
- }
- </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
- * 根据id获取附件信息
- * @param annexId
- * @return
- </span><span style="color: #008000;">*/</span>
- <span style="color: #0000ff;">public</span><span style="color: #000000;"> Annex getAnnexById(Long annexId){
- </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">this</span>.getHibernateTemplate().<span style="color: #0000ff;">get</span>(Annex.<span style="color: #0000ff;">class</span><span style="color: #000000;">, annexId);
- }
- </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
- * 修改处理过程
- * @param hp
- </span><span style="color: #008000;">*/</span>
- <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> updateHandProcess(HandProcess hp){
- </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.getHibernateTemplate().update(hp);
- }
- }</span>
service层
- <span style="color: #000000;">package com.h3c.zgc.upload;
- import java.io.Serializable;
- import java.util.List;
- import java.util.Map;
- import javax.annotation.Resource;
- import javax.transaction.Transactional;
- import org.springframework.stereotype.Service;
- @Service
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> UploadDownService {
- @Resource
- </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> UploadDownDao uploadDownDao;
- </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Long getMaxIdOfAnnex(){
- </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">this</span><span style="color: #000000;">.uploadDownDao.getMaxIdOfAnnex();
- }
- </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Long getMaxIdOfHandProcess(){
- </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">this</span><span style="color: #000000;">.uploadDownDao.getMaxIdOfHandProcess();
- }
- @Transactional
- </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Serializable saveAnnex(Annex annex){
- </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">this</span><span style="color: #000000;">.uploadDownDao.saveAnnex(annex);
- }
- @Transactional
- </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Serializable saveHandProcess(HandProcess hp){
- </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">this</span><span style="color: #000000;">.uploadDownDao.saveHandProcess(hp);
- }
- </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> Annex getAnnexById(Long annexId){
- </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">this</span><span style="color: #000000;">.uploadDownDao.getAnnexById(annexId);
- }
- </span><span style="color: #0000ff;">public</span> List<Map<String,Object>><span style="color: #000000;"> getHandProcessList(){
- </span><span style="color: #0000ff;">return</span> <span style="color: #0000ff;">this</span><span style="color: #000000;">.uploadDownDao.getHandProcessList();
- }
- @Transactional
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> updateHandProcess(HandProcess hp){
- </span><span style="color: #0000ff;">this</span><span style="color: #000000;">.uploadDownDao.updateHandProcess(hp);
- }
- }</span>
controller层
- <span style="color: #000000;">package com.h3c.zgc.upload;
- import java.io.BufferedOutputStream;
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.Serializable;
- import java.text.DateFormat;
- import java.text.ParseException;
- import java.text.SimpleDateFormat;
- import java.util.List;
- import java.util.Map;
- import javax.annotation.Resource;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestParam;
- import org.springframework.web.multipart.MultipartFile;
- @Controller
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">class</span><span style="color: #000000;"> UploadDownFileController {
- @Resource
- </span><span style="color: #0000ff;">private</span><span style="color: #000000;"> UploadDownService uploadDownService;
- </span><span style="color: #008000;">//</span><span style="color: #008000;">单文件上传到数据库,MultipartFile中封装了上传文件的信息</span>
- @RequestMapping(<span style="color: #800000;">"</span><span style="color: #800000;">upload</span><span style="color: #800000;">"</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String upload(HandProcess hp, HttpServletRequest request,
- @RequestParam(</span><span style="color: #800000;">"</span><span style="color: #800000;">uploadFile1</span><span style="color: #800000;">"</span><span style="color: #000000;">) MultipartFile uploadFile1)
- throws IOException, ParseException {
- InputStream </span><span style="color: #0000ff;">is</span> =<span style="color: #000000;"> uploadFile1.getInputStream();
- </span><span style="color: #0000ff;">byte</span>[] buffer = <span style="color: #0000ff;">this</span>.inputStrean2ByteArr(<span style="color: #0000ff;">is</span><span style="color: #000000;">);
- </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
- * 保存处理过程信息
- </span><span style="color: #008000;">*/</span>
- <span style="color: #008000;">//</span><span style="color: #008000;"> get max id then ++1</span>
- Long hpMaxId = <span style="color: #0000ff;">this</span><span style="color: #000000;">.uploadDownService.getMaxIdOfHandProcess();
- DateFormat df </span>= <span style="color: #0000ff;">new</span> SimpleDateFormat(<span style="color: #800000;">"</span><span style="color: #800000;">yyyy-MM-dd hh:mm:ss</span><span style="color: #800000;">"</span><span style="color: #000000;">);
- hp.setHandTime(df.parse(hp.getHandTimeStr()).getTime());
- hp.setId(hpMaxId </span>+ <span style="color: #800080;">1</span><span style="color: #000000;">);
- </span><span style="color: #008000;">//</span><span style="color: #008000;">保存处理过程</span>
- Serializable hpId = <span style="color: #0000ff;">this</span><span style="color: #000000;">.uploadDownService.saveHandProcess(hp);
- </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
- * 保存附件
- </span><span style="color: #008000;">*/</span><span style="color: #000000;">
- Annex annex </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> Annex();
- annex.setCustomerId(</span><span style="color: #800080;">1L</span><span style="color: #000000;">);
- annex.setHandId((Long) hpId);
- annex.setRealName(uploadFile1.getOriginalFilename());
- annex.setFileContent(buffer);
- </span><span style="color: #008000;">//</span><span style="color: #008000;">查找附件id最大值</span>
- annex.setId(<span style="color: #0000ff;">this</span>.uploadDownService.getMaxIdOfAnnex() + <span style="color: #800080;">1</span><span style="color: #000000;">);
- Serializable aid </span>= <span style="color: #0000ff;">this</span><span style="color: #000000;">.uploadDownService.saveAnnex(annex);
- </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
- * 获取处理过程列表
- </span><span style="color: #008000;">*/</span><span style="color: #000000;">
- List</span><Map<String, Object>> <span style="color: #0000ff;">as</span> = <span style="color: #0000ff;">this</span><span style="color: #000000;">.uploadDownService
- .getHandProcessList();
- </span><span style="color: #0000ff;">for</span> (Map<String, Object> map : <span style="color: #0000ff;">as</span><span style="color: #000000;">) {
- map.put(</span><span style="color: #800000;">"</span><span style="color: #800000;">handTime</span><span style="color: #800000;">"</span>, df.format(map.<span style="color: #0000ff;">get</span>(<span style="color: #800000;">"</span><span style="color: #800000;">handTime</span><span style="color: #800000;">"</span><span style="color: #000000;">)));
- }
- request.setAttribute(</span><span style="color: #800000;">"</span><span style="color: #800000;">as</span><span style="color: #800000;">"</span>, <span style="color: #0000ff;">as</span><span style="color: #000000;">);
- </span><span style="color: #0000ff;">return</span> <span style="color: #800000;">"</span><span style="color: #800000;">annex/annexList</span><span style="color: #800000;">"</span><span style="color: #000000;">;
- }
- </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
- * 多文件上传
- * @param hp 处理过程
- * @param request
- * @param uploadFile1 上传文件
- * @return
- * @throws IOException
- * @throws ParseException
- </span><span style="color: #008000;">*/</span><span style="color: #000000;">
- @RequestMapping(</span><span style="color: #800000;">"</span><span style="color: #800000;">uploadOneMore</span><span style="color: #800000;">"</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">public</span><span style="color: #000000;"> String uploadOneMore(HandProcess hp, HttpServletRequest request,
- @RequestParam(</span><span style="color: #800000;">"</span><span style="color: #800000;">uploadFile1</span><span style="color: #800000;">"</span><span style="color: #000000;">) MultipartFile[] uploadFile1)
- throws IOException, ParseException {
- </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
- * 保存处理过程信息
- </span><span style="color: #008000;">*/</span>
- <span style="color: #008000;">//</span><span style="color: #008000;"> get max id then ++1</span>
- Long hpMaxId = <span style="color: #0000ff;">this</span><span style="color: #000000;">.uploadDownService.getMaxIdOfHandProcess();
- DateFormat df </span>= <span style="color: #0000ff;">new</span> SimpleDateFormat(<span style="color: #800000;">"</span><span style="color: #800000;">yyyy-MM-dd hh:mm:ss</span><span style="color: #800000;">"</span><span style="color: #000000;">);
- hp.setHandTime(df.parse(hp.getHandTimeStr()).getTime());
- hp.setId(hpMaxId </span>+ <span style="color: #800080;">1</span><span style="color: #000000;">);
- </span><span style="color: #008000;">//
- </span> Serializable hpId = <span style="color: #0000ff;">this</span><span style="color: #000000;">.uploadDownService.saveHandProcess(hp);
- </span><span style="color: #008000;">//</span><span style="color: #008000;">保存改工单下的所有附件</span>
- <span style="color: #0000ff;">for</span> (<span style="color: #0000ff;">int</span> i = <span style="color: #800080;">0</span>; i < uploadFile1.length; i++<span style="color: #000000;">) {
- InputStream </span><span style="color: #0000ff;">is</span> =<span style="color: #000000;"> uploadFile1[i].getInputStream();
- </span><span style="color: #0000ff;">byte</span>[] buffer = <span style="color: #0000ff;">this</span>.inputStrean2ByteArr(<span style="color: #0000ff;">is</span><span style="color: #000000;">);
- </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
- * 保存附件
- </span><span style="color: #008000;">*/</span><span style="color: #000000;">
- Annex annex </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> Annex();
- annex.setCustomerId(</span><span style="color: #800080;">1L</span><span style="color: #000000;">);
- annex.setHandId((Long) hpId);
- annex.setRealName(uploadFile1[i].getOriginalFilename());
- annex.setFileContent(buffer);
- annex.setId(</span><span style="color: #0000ff;">this</span>.uploadDownService.getMaxIdOfAnnex() + <span style="color: #800080;">1</span><span style="color: #000000;">);
- Serializable annexId </span>= <span style="color: #0000ff;">this</span><span style="color: #000000;">.uploadDownService.saveAnnex(annex);
- }
- </span><span style="color: #008000;">//</span><span style="color: #008000;">多文件上传,一个处理过程下面要有多个附件,在页面中显示的时候,一个处理过程后面要显示多个附件
- </span><span style="color: #008000;">//</span><span style="color: #008000;">更新表handprocess</span>
- <span style="color: #0000ff;">this</span><span style="color: #000000;">.uploadDownService.updateHandProcess(hp);
- List</span><Map<String, Object>> <span style="color: #0000ff;">as</span> = <span style="color: #0000ff;">this</span><span style="color: #000000;">.uploadDownService
- .getHandProcessList();
- request.setAttribute(</span><span style="color: #800000;">"</span><span style="color: #800000;">as</span><span style="color: #800000;">"</span>, <span style="color: #0000ff;">as</span><span style="color: #000000;">);
- </span><span style="color: #0000ff;">return</span> <span style="color: #800000;">"</span><span style="color: #800000;">annex/annexList</span><span style="color: #800000;">"</span><span style="color: #000000;">;
- }
- </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
- * 文件下载
- * @param response
- * @param annexId
- * @throws IOException
- </span><span style="color: #008000;">*/</span><span style="color: #000000;">
- @RequestMapping(</span><span style="color: #800000;">"</span><span style="color: #800000;">download</span><span style="color: #800000;">"</span><span style="color: #000000;">)
- </span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> download(HttpServletResponse response, Long annexId)
- throws IOException {
- Annex a </span>= <span style="color: #0000ff;">this</span><span style="color: #000000;">.uploadDownService.getAnnexById(annexId);
- </span><span style="color: #0000ff;">byte</span>[] b =<span style="color: #000000;"> a.getFileContent();
- response.setContentType(</span><span style="color: #800000;">"</span><span style="color: #800000;">application/octet-stream;charset=UTF-8</span><span style="color: #800000;">"</span><span style="color: #000000;">);
- response.setCharacterEncoding(</span><span style="color: #800000;">"</span><span style="color: #800000;">utf-8</span><span style="color: #800000;">"</span><span style="color: #000000;">);
- response.setHeader(</span><span style="color: #800000;">"</span><span style="color: #800000;">Content-Disposition</span><span style="color: #800000;">"</span><span style="color: #000000;">,
- </span><span style="color: #800000;">"</span><span style="color: #800000;">attachment;filename=</span><span style="color: #800000;">"</span> + <span style="color: #0000ff;">new</span> String(a.getRealName().getBytes(<span style="color: #800000;">"</span><span style="color: #800000;">gbk</span><span style="color: #800000;">"</span>),<span style="color: #800000;">"</span><span style="color: #800000;">iso-8859-1</span><span style="color: #800000;">"</span>)); <span style="color: #008000;">//</span><span style="color: #008000;">防止文件乱码</span>
- <span style="color: #000000;">
- BufferedOutputStream bos </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> BufferedOutputStream(
- response.getOutputStream());
- bos.write(b);
- bos.close();
- }
- </span><span style="color: #008000;">/*</span><span style="color: #008000;">*
- * inputstream转成byte数组
- * @param inStream
- * @return
- * @throws IOException
- </span><span style="color: #008000;">*/</span>
- <span style="color: #0000ff;">public</span> <span style="color: #0000ff;">byte</span><span style="color: #000000;">[] inputStrean2ByteArr(InputStream inStream) throws IOException {
- ByteArrayOutputStream swapStream </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> ByteArrayOutputStream();
- </span><span style="color: #0000ff;">byte</span>[] buff = <span style="color: #0000ff;">new</span> <span style="color: #0000ff;">byte</span>[<span style="color: #800080;">100</span><span style="color: #000000;">];
- </span><span style="color: #0000ff;">int</span> rc = <span style="color: #800080;">0</span><span style="color: #000000;">;
- </span><span style="color: #0000ff;">while</span> ((rc = inStream.read(buff, <span style="color: #800080;">0</span>, <span style="color: #800080;">100</span>)) > <span style="color: #800080;">0</span><span style="color: #000000;">) {
- swapStream.write(buff, </span><span style="color: #800080;">0</span><span style="color: #000000;">, rc);
- }
- </span><span style="color: #0000ff;">byte</span>[] in2b =<span style="color: #000000;"> swapStream.toByteArray();
- </span><span style="color: #0000ff;">return</span><span style="color: #000000;"> in2b;
- }
- }</span>
main.jsp
- <%@ page language=<span style="color: #800000;">"</span><span style="color: #800000;">java</span><span style="color: #800000;">"</span> contentType=<span style="color: #800000;">"</span><span style="color: #800000;">text/html; charset=UTF-8</span><span style="color: #800000;">"</span><span style="color: #000000;">
- pageEncoding</span>=<span style="color: #800000;">"</span><span style="color: #800000;">UTF-8</span><span style="color: #800000;">"</span>%>
- <%@taglib prefix=<span style="color: #800000;">"</span><span style="color: #800000;">c</span><span style="color: #800000;">"</span> uri=<span style="color: #800000;">"</span><span style="color: #800000;">http://java.sun.com/jsp/jstl/core</span><span style="color: #800000;">"</span>%>
- <!DOCTYPE html PUBLIC <span style="color: #800000;">"</span><span style="color: #800000;">-//W3C//DTD HTML 4.01 Transitional//EN</span><span style="color: #800000;">"</span> <span style="color: #800000;">"</span><span style="color: #800000;">http://www.w3.org/TR/html4/loose.dtd</span><span style="color: #800000;">"</span>>
- <html>
- <head>
- <meta http-equiv=<span style="color: #800000;">"</span><span style="color: #800000;">Content-Type</span><span style="color: #800000;">"</span> content=<span style="color: #800000;">"</span><span style="color: #800000;">text/html; charset=UTF-8</span><span style="color: #800000;">"</span>>
- <title>Insert title here</title>
- <script type=<span style="color: #800000;">"</span><span style="color: #800000;">text/javascript</span><span style="color: #800000;">"</span> src=<span style="color: #800000;">"</span><span style="color: #800000;">${pageContext.request.contextPath }/resources/js/jquery-1.11.1.js</span><span style="color: #800000;">"</span>></script>
- </head>
- <body>
- <a href=<span style="color: #800000;">"</span><span style="color: #800000;">${pageContext.request.contextPath }/getAllStudent</span><span style="color: #800000;">"</span>>查找所有用户</a>
- <a href=<span style="color: #800000;">"</span><span style="color: #800000;">${pageContext.request.contextPath }/savePerson</span><span style="color: #800000;">"</span>>单独保存Person</a>
- <a href=<span style="color: #800000;">"</span><span style="color: #800000;">${pageContext.request.contextPath }/savePersonHouse</span><span style="color: #800000;">"</span>>保存Person和House</a>
- <br/>
- <form action=<span style="color: #800000;">"</span><span style="color: #800000;">${pageContext.request.contextPath }/getArr</span><span style="color: #800000;">"</span> >
- <input type=<span style="color: #800000;">"</span><span style="color: #800000;">text</span><span style="color: #800000;">"</span> name=<span style="color: #800000;">"</span><span style="color: #800000;">workSheetId</span><span style="color: #800000;">"</span>/><br/>
- <input type=<span style="color: #800000;">"</span><span style="color: #800000;">submit</span><span style="color: #800000;">"</span> value=<span style="color: #800000;">"</span><span style="color: #800000;">search</span><span style="color: #800000;">"</span>/>
- </form>
- <br/><br/><br/>
- <form action=<span style="color: #800000;">"</span><span style="color: #800000;"><c:url value=</span><span style="color: #800000;">"</span>/upload<span style="color: #800000;">"</span><span style="color: #800000;">/></span><span style="color: #800000;">"</span> method=<span style="color: #800000;">"</span><span style="color: #800000;">post</span><span style="color: #800000;">"</span> enctype=<span style="color: #800000;">"</span><span style="color: #800000;">multipart/form-data</span><span style="color: #800000;">"</span>><span style="color: #000000;">
- 处理时间:</span><input type=<span style="color: #800000;">"</span><span style="color: #800000;">text</span><span style="color: #800000;">"</span> name=<span style="color: #800000;">"</span><span style="color: #800000;">handTimeStr</span><span style="color: #800000;">"</span>/><br><span style="color: #000000;">
- 处理人:</span><input type=<span style="color: #800000;">"</span><span style="color: #800000;">text</span><span style="color: #800000;">"</span> name=<span style="color: #800000;">"</span><span style="color: #800000;">handName</span><span style="color: #800000;">"</span>/><br/><span style="color: #000000;">
- 原因:</span><input type=<span style="color: #800000;">"</span><span style="color: #800000;">text</span><span style="color: #800000;">"</span> name=<span style="color: #800000;">"</span><span style="color: #800000;">reason</span><span style="color: #800000;">"</span>/><br/><span style="color: #000000;">
- 选择文件:</span><input type=<span style="color: #800000;">"</span><span style="color: #800000;">file</span><span style="color: #800000;">"</span> name=<span style="color: #800000;">"</span><span style="color: #800000;">uploadFile1</span><span style="color: #800000;">"</span>/><br/>
- <input type=<span style="color: #800000;">"</span><span style="color: #800000;">submit</span><span style="color: #800000;">"</span> value=<span style="color: #800000;">"</span><span style="color: #800000;">submit</span><span style="color: #800000;">"</span>/>
- </form>
- <br/><span style="color: #000000;">
- upload one more
- </span><form action=<span style="color: #800000;">"</span><span style="color: #800000;"><c:url value=</span><span style="color: #800000;">"</span>/uploadOneMore<span style="color: #800000;">"</span><span style="color: #800000;">/></span><span style="color: #800000;">"</span> method=<span style="color: #800000;">"</span><span style="color: #800000;">post</span><span style="color: #800000;">"</span> enctype=<span style="color: #800000;">"</span><span style="color: #800000;">multipart/form-data</span><span style="color: #800000;">"</span>><span style="color: #000000;">
- 处理时间:</span><input type=<span style="color: #800000;">"</span><span style="color: #800000;">text</span><span style="color: #800000;">"</span> name=<span style="color: #800000;">"</span><span style="color: #800000;">handTimeStr</span><span style="color: #800000;">"</span>/><br><span style="color: #000000;">
- 处理人:</span><input type=<span style="color: #800000;">"</span><span style="color: #800000;">text</span><span style="color: #800000;">"</span> name=<span style="color: #800000;">"</span><span style="color: #800000;">handName</span><span style="color: #800000;">"</span>/><br/><span style="color: #000000;">
- 原因:</span><input type=<span style="color: #800000;">"</span><span style="color: #800000;">text</span><span style="color: #800000;">"</span> name=<span style="color: #800000;">"</span><span style="color: #800000;">reason</span><span style="color: #800000;">"</span>/><br/><span style="color: #000000;">
- 选择文件:</span><input type=<span style="color: #800000;">"</span><span style="color: #800000;">file</span><span style="color: #800000;">"</span> name=<span style="color: #800000;">"</span><span style="color: #800000;">uploadFile1</span><span style="color: #800000;">"</span>/><br/><span style="color: #000000;">
- 选择文件:</span><input type=<span style="color: #800000;">"</span><span style="color: #800000;">file</span><span style="color: #800000;">"</span> name=<span style="color: #800000;">"</span><span style="color: #800000;">uploadFile1</span><span style="color: #800000;">"</span>/><br/><span style="color: #000000;">
- 选择文件:</span><input type=<span style="color: #800000;">"</span><span style="color: #800000;">file</span><span style="color: #800000;">"</span> name=<span style="color: #800000;">"</span><span style="color: #800000;">uploadFile1</span><span style="color: #800000;">"</span>/><br/>
- <input type=<span style="color: #800000;">"</span><span style="color: #800000;">submit</span><span style="color: #800000;">"</span> value=<span style="color: #800000;">"</span><span style="color: #800000;">submit</span><span style="color: #800000;">"</span>/>
- </form>
- </body>
- </html>
annexList.jsp 显示处理过程已经处理过程下附件
- <%@ page language=<span style="color: #800000;">"</span><span style="color: #800000;">java</span><span style="color: #800000;">"</span> contentType=<span style="color: #800000;">"</span><span style="color: #800000;">text/html; charset=UTF-8</span><span style="color: #800000;">"</span><span style="color: #000000;">
- pageEncoding</span>=<span style="color: #800000;">"</span><span style="color: #800000;">UTF-8</span><span style="color: #800000;">"</span>%>
- <%@taglib prefix=<span style="color: #800000;">"</span><span style="color: #800000;">c</span><span style="color: #800000;">"</span> uri=<span style="color: #800000;">"</span><span style="color: #800000;">http://java.sun.com/jsp/jstl/core</span><span style="color: #800000;">"</span>%>
- <!DOCTYPE html PUBLIC <span style="color: #800000;">"</span><span style="color: #800000;">-//W3C//DTD HTML 4.01 Transitional//EN</span><span style="color: #800000;">"</span> <span style="color: #800000;">"</span><span style="color: #800000;">http://www.w3.org/TR/html4/loose.dtd</span><span style="color: #800000;">"</span>>
- <html>
- <head>
- <meta http-equiv=<span style="color: #800000;">"</span><span style="color: #800000;">Content-Type</span><span style="color: #800000;">"</span> content=<span style="color: #800000;">"</span><span style="color: #800000;">text/html; charset=UTF-8</span><span style="color: #800000;">"</span>>
- <title>Insert title here</title>
- <script type=<span style="color: #800000;">"</span><span style="color: #800000;">text/javascript</span><span style="color: #800000;">"</span><span style="color: #000000;">
- src</span>=<span style="color: #800000;">"</span><span style="color: #800000;">${pageContext.request.contextPath }/resources/js/jquery-1.11.1.js</span><span style="color: #800000;">"</span>></script>
- </head>
- <body>
- <table>
- <c:forEach items=<span style="color: #800000;">"</span><span style="color: #800000;">${as }</span><span style="color: #800000;">"</span> <span style="color: #0000ff;">var</span>=<span style="color: #800000;">"</span><span style="color: #800000;">ah</span><span style="color: #800000;">"</span> varStatus=<span style="color: #800000;">"</span><span style="color: #800000;">status</span><span style="color: #800000;">"</span>>
- <tr>
- <td>${ah[<span style="color: #800000;">‘</span><span style="color: #800000;">handprocessId</span><span style="color: #800000;">‘</span>] }</td>
- <td>${ah[<span style="color: #800000;">‘</span><span style="color: #800000;">handName</span><span style="color: #800000;">‘</span>] }</td>
- <td>${ah[<span style="color: #800000;">‘</span><span style="color: #800000;">reason</span><span style="color: #800000;">‘</span>] }</td>
- <td id=<span style="color: #800000;">"</span><span style="color: #800000;">id${status.index }</span><span style="color: #800000;">"</span>>${ah[<span style="color: #800000;">‘</span><span style="color: #800000;">handTime</span><span style="color: #800000;">‘</span>] }</td>
- <td><span style="color: #000000;">
- ${ah[</span><span style="color: #800000;">‘</span><span style="color: #800000;">annex</span><span style="color: #800000;">‘</span>][<span style="color: #800000;">‘</span><span style="color: #800000;">realName</span><span style="color: #800000;">‘</span><span style="color: #000000;">] }
- </span><a href=<span style="color: #800000;">"</span><span style="color: #800000;"><c:url value=</span><span style="color: #800000;">"</span>/download?annexId=${ah[<span style="color: #800000;">‘</span><span style="color: #800000;">annexId</span><span style="color: #800000;">‘</span>] }<span style="color: #800000;">"</span><span style="color: #800000;">/></span><span style="color: #800000;">"</span>>${ah[<span style="color: #800000;">‘</span><span style="color: #800000;">realName</span><span style="color: #800000;">‘</span>] }</a>
- </td>
- </tr>
- </c:forEach>
- </table>
- </body>
- <script type=<span style="color: #800000;">"</span><span style="color: #800000;">text/javascript</span><span style="color: #800000;">"</span>>
- </script>
- </html>
springMVC+spring+hibernate注解上传文件到数据库,下载,多文件上传
标签: