Controller
*******************************************************************************************************************
@Controller
@RequestMapping("/upload")
public class Sys_Comm_FileimgController {
@Resource
private Sys_Comm_FileimgService sys_Comm_FileimgService;
/**
*
* @Title upload
* @Description 文件上传
* @Date 2017年3月27日下午4:47:35
*/
@RequestMapping("/upload")
// @ResponseBody
public String upload(HttpServletRequest request, HttpServletResponse response, MultipartFile file,String classid,String username) {
String years="2015";
sys_Comm_FileimgService.upload(request, response, "aaa", username,file,years,classid);
return "redirect:/upload/message";
}
/**
*
* @Title download
* @Description 文件下载
* @Date 2017年3月27日下午4:46:48
*/
@RequestMapping("download")
public void download(HttpServletRequest request, HttpServletResponse response,String fileName,String fileSaveName) {
try {
fileName = "test.txt";
fileSaveName = "5e971ec4-aadf-44ae-b050-5154773aed18.txt";
sys_Comm_FileimgService.download(request, response, fileName, fileSaveName);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
*
* @Title index
* @Description 上传下载页面
* @Date 2017年3月23日下午3:52:46
*/
@RequestMapping("index")
public String index() {
return "upAndDown";
}
/**
*
* @Title message
* @Description 返回成功页面
* @Date 2017年3月29日下午1:54:48
*/
@RequestMapping("message")
public String message() {
return "/utils/message";
}
}
Service
******************************************************************************************************************
public interface Sys_Comm_FileimgService {
//mainId 业务表主键
File upload(HttpServletRequest request,HttpServletResponse response,String mainId,String username,MultipartFile file,String years,String classid);
//fileName 文件名
//fileSaveName 文件保存名
void download(HttpServletRequest request, HttpServletResponse response,String fileName,String fileSaveName) throws Exception;
}
ServiceImpl
***********************************************************************************************************************
/**
*
* @className Sys_Comm_FileimgServiceImpl
* @Date 2017年3月27日下午4:49:07
*/
@Service("Sys_Comm_FileimgService")
public class Sys_Comm_FileimgServiceImpl implements Sys_Comm_FileimgService {
@Resource
private Sys_Comm_FileimgDao sys_Comm_FileimgDao;
// 默认大小 50M
public static final long DEFAULT_MAX_SIZE = 52428800;
// 默认上传的地址
public static String defaultBaseDir = "";
@SuppressWarnings("null")
public File upload(HttpServletRequest request,HttpServletResponse response,String userid,String username,MultipartFile file,String years,String classid)
{
// 消息提示,
String message = "";
File desc=null;
try {
try {
// 得到上传文件的保存目录,将上传的文件存放于WEB-INF目录下,不允许外界直接访问,保证上传文件的安全
String savePath = request.getSession().getServletContext().getRealPath("/WEB-INF/upload");
// 文件真是名字
String filename = file.getOriginalFilename();
// 文件保存的完整路径
String filePathName = savePath + File.separator + filename;
String roadcode=filename.substring(0, 4);
// 文件扩展名
desc = getAbsoluteFile(request.getSession().getServletContext().getRealPath("/WEB-INF/upload/"), filename);
// MultipartFile自带的解析方法
file.transferTo(desc);
//保存文件信息
String name = filename.substring(0, filename.lastIndexOf('.'));
// 文件扩展名
String fileExt = filePathName.substring(filePathName.lastIndexOf(".") + 1);
// 文件保存名字
String saveName = UUID.randomUUID().toString();
Date date = new Date();
// 保存文件信息
Sys_Comm_Fileimg sys_Comm_Fileimg = new Sys_Comm_Fileimg();
// 主表主键 改成自增
//sys_Comm_Fileimg.setFdObjectid(this.getCode(11));
sys_Comm_Fileimg.setUploadtime(date);
sys_Comm_Fileimg.setName(name);
sys_Comm_Fileimg.setIsDel("0");
sys_Comm_Fileimg.setIsUpload("0");
sys_Comm_Fileimg.setUserid(userid);
sys_Comm_Fileimg.setUsername(username);
sys_Comm_Fileimg.setFileext(fileExt);
sys_Comm_Fileimg.setSavename(saveName);
sys_Comm_Fileimg.setUpdatedate(date);
sys_Comm_Fileimg.setYears(years);
sys_Comm_Fileimg.setRoadcode(roadcode);
sys_Comm_Fileimg.setClassid(classid);
sys_Comm_FileimgDao.insert(sys_Comm_Fileimg);
} catch (Exception e) {
message = "文件上传失败!";
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
return desc;
}
public static String getCode(int passLength)
{
StringBuffer buffer = null;
StringBuffer sb = new StringBuffer();
Random r = new Random();
buffer = new StringBuffer("0123456789");
int range = buffer.length();
for (int i = 0; i < passLength; ++i)
{
sb.append(buffer.charAt(r.nextInt(range)));
}
return sb.toString();
}
private static final File getAbsoluteFile(String uploadDir, String filename) throws IOException {
if (uploadDir.endsWith("/")) {
uploadDir = uploadDir.substring(0, uploadDir.length() - 1);
}
if (filename.startsWith("/")) {
filename = filename.substring(0, uploadDir.length() - 1);
}
File desc = new File(uploadDir + "/" + filename);
if (!desc.getParentFile().exists()) {
//创建目录
desc.getParentFile().mkdirs();
System.out.println("创建文件保存目录");
}
if (!desc.exists()) {
desc.createNewFile();
}
return desc;
}
public static final String extractFilename(MultipartFile file, String baseDir) throws UnsupportedEncodingException {
String filename = file.getOriginalFilename();
int slashIndex = filename.indexOf("/");
if (slashIndex >= 0) {
filename = filename.substring(slashIndex + 1);
}
filename = baseDir + "/" + filename;
return filename;
}
public static final String extractUploadDir(HttpServletRequest request) {
return request.getSession().getServletContext().getRealPath("/");
}
@RequestMapping(value = "download", method = RequestMethod.GET)
public void download(HttpServletRequest request, HttpServletResponse response, String fileName, String fileSaveName)
throws Exception {
// 设置文件ContentType类型,这样设置,会自动判断下载文件类型
response.setContentType("multipart/form-data");
// response.setContentType("text/html;charset=UTF-8");
// 转码,免得文件名中文乱码
request.setCharacterEncoding("UTF-8");
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
String newFileName = new String(fileName.getBytes("ISO8859-1"), "UTF-8");
String ctxPath = request.getSession().getServletContext().getRealPath("/")
+ Sys_Comm_FileimgServiceImpl.defaultBaseDir;
String downLoadPath = ctxPath + "/" + newFileName;
long fileLength = new File(downLoadPath).length();
// 设置文件下载头
response.setHeader("Content-disposition",
"attachment; filename=" + new String(newFileName.getBytes("gb2312"), "ISO8859-1"));
// 设置文件长度
response.setHeader("Content-Length", String.valueOf(fileLength));
bis = new BufferedInputStream(new FileInputStream(downLoadPath));
bos = new BufferedOutputStream(response.getOutputStream());
byte[] buff = new byte[2048];
int bytesRead;
while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {
bos.flush();
bos.write(buff, 0, bytesRead);
}
bis.close();
bos.close();
}
}
dao
**********************************************************************************************************************
public interface Sys_Comm_FileimgDao {
void insert(Sys_Comm_Fileimg record);
void insertSelective(Sys_Comm_Fileimg record);
}
mapper
*************************************************************************************************************************
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.system.utils.upAndDown.dao.Sys_Comm_FileimgDao">
<resultMap id="BaseResultMap" type="com.system.utils.upAndDown.pojo.Sys_Comm_Fileimg">
<result column="FD_OBJECTID" jdbcType="VARCHAR" property="fdObjectid" />
<result column="NAME" jdbcType="VARCHAR" property="name" />
<result column="FILEEXT" jdbcType="VARCHAR" property="fileext" />
<result column="MAINID" jdbcType="VARCHAR" property="mainid" />
<result column="STEPID" jdbcType="VARCHAR" property="stepid" />
<result column="USERID" jdbcType="VARCHAR" property="userid" />
<result column="UPLOADTIME" jdbcType="TIMESTAMP" property="uploadtime" />
<result column="DESCRIPTION" jdbcType="VARCHAR" property="description" />
<result column="UPDATEDATE" jdbcType="TIMESTAMP" property="updatedate" />
<result column="IS_DEL" jdbcType="VARCHAR" property="isDel" />
<result column="PDAID" jdbcType="VARCHAR" property="pdaid" />
<result column="SAVENAME" jdbcType="VARCHAR" property="savename" />
<result column="TYPE" jdbcType="VARCHAR" property="type" />
<result column="IS_UPLOAD" jdbcType="VARCHAR" property="isUpload" />
<result column="FILEPATH" jdbcType="VARCHAR" property="filepath" />
<result column="ROAD_CODE" jdbcType="VARCHAR" property="roadcode" />
<result column="YEARS" jdbcType="VARCHAR" property="years" />
<result column="CLASSID" jdbcType="VARCHAR" property="classid" />
<result column="USERNAME" jdbcType="VARCHAR" property="username" />
</resultMap>
<insert id="insert" parameterType="com.system.utils.upAndDown.pojo.Sys_Comm_Fileimg">
insert into sys_comm_fileimg (NAME, FILEEXT,
MAINID, STEPID, USERID,
UPLOADTIME, DESCRIPTION, UPDATEDATE,
IS_DEL, PDAID, SAVENAME,
TYPE, IS_UPLOAD, FILEPATH,ROAD_CODE,YEARS,CLASSID,USERNAME
)
values (#{name,jdbcType=VARCHAR}, #{fileext,jdbcType=VARCHAR},
#{mainid,jdbcType=VARCHAR}, #{stepid,jdbcType=VARCHAR}, #{userid,jdbcType=VARCHAR},
#{uploadtime,jdbcType=TIMESTAMP}, #{description,jdbcType=VARCHAR}, #{updatedate,jdbcType=TIMESTAMP},
#{isDel,jdbcType=VARCHAR}, #{pdaid,jdbcType=VARCHAR}, #{savename,jdbcType=VARCHAR},
#{type,jdbcType=VARCHAR}, #{isUpload,jdbcType=VARCHAR}, #{filepath,jdbcType=VARCHAR}
, #{roadcode,jdbcType=VARCHAR}, #{years,jdbcType=VARCHAR},#{classid,jdbcType=VARCHAR}
,#{username,jdbcType=VARCHAR}
)
</insert>
</mapper>
pojo
*************************************************************************************************************************
package com.system.utils.upAndDown.pojo;
import java.util.Date;
public class Sys_Comm_Fileimg {
private String fdObjectid;
private String name;
private String fileext;
private String mainid;
private String stepid;
private String userid;
private Date uploadtime;
private String description;
private Date updatedate;
private String isDel;
private String pdaid;
private String savename;
private String username;
public String getClassid() {
return classid;
}
public void setClassid(String classid) {
this.classid = classid;
}
private String type;
private String isUpload;
private String filepath;
private String roadcode;
private String classid;
public String getRoadcode() {
return roadcode;
}
public void setRoadcode(String roadcode) {
this.roadcode = roadcode;
}
public String getYears() {
return years;
}
public void setYears(String years) {
this.years = years;
}
private String years;
public String getFdObjectid() {
return fdObjectid;
}
public void setFdObjectid(String fdObjectid) {
this.fdObjectid = fdObjectid == null ? null : fdObjectid.trim();
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name == null ? null : name.trim();
}
public String getFileext() {
return fileext;
}
public void setFileext(String fileext) {
this.fileext = fileext == null ? null : fileext.trim();
}
public String getMainid() {
return mainid;
}
public void setMainid(String mainid) {
this.mainid = mainid == null ? null : mainid.trim();
}
public String getStepid() {
return stepid;
}
public void setStepid(String stepid) {
this.stepid = stepid == null ? null : stepid.trim();
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid == null ? null : userid.trim();
}
public Date getUploadtime() {
return uploadtime;
}
public void setUploadtime(Date uploadtime) {
this.uploadtime = uploadtime;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description == null ? null : description.trim();
}
public Date getUpdatedate() {
return updatedate;
}
public void setUpdatedate(Date updatedate) {
this.updatedate = updatedate;
}
public String getIsDel() {
return isDel;
}
public void setIsDel(String isDel) {
this.isDel = isDel == null ? null : isDel.trim();
}
public String getPdaid() {
return pdaid;
}
public void setPdaid(String pdaid) {
this.pdaid = pdaid == null ? null : pdaid.trim();
}
public String getSavename() {
return savename;
}
public void setSavename(String savename) {
this.savename = savename == null ? null : savename.trim();
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type == null ? null : type.trim();
}
public String getIsUpload() {
return isUpload;
}
public void setIsUpload(String isUpload) {
this.isUpload = isUpload == null ? null : isUpload.trim();
}
public String getFilepath() {
return filepath;
}
public void setFilepath(String filepath) {
this.filepath = filepath == null ? null : filepath.trim();
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
}