ssm 文件上传、下载



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;
 }
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SSM框架可以使用SpringMVC的文件上传下载功能来实现文件上传下载。下面是一个简单的示例: 1. 文件上传 在SpringMVC的控制器中,可以使用`@RequestParam`注解来接收上传的文件,然后使用`MultipartFile`类来处理文件。具体代码如下: ```java @RequestMapping(value = "/upload", method = RequestMethod.POST) public String upload(@RequestParam("file") MultipartFile file, HttpServletRequest request) { // 判断文件是否为空 if (!file.isEmpty()) { try { // 获取文件存储路径(可以根据实际情况修改) String path = request.getSession().getServletContext().getRealPath("/upload/"); // 获取文件名 String fileName = file.getOriginalFilename(); // 创建文件对象 File filepath = new File(path, fileName); // 如果目录不存在则创建目录 if (!filepath.getParentFile().exists()) { filepath.getParentFile().mkdirs(); } // 将上传文件保存到目标文件中 file.transferTo(new File(path + File.separator + fileName)); return "success"; } catch (Exception e) { e.printStackTrace(); } } return "fail"; } ``` 2. 文件下载 在SpringMVC的控制器中,可以使用`@RequestMapping`注解来指定文件下载的URL地址,然后使用`HttpServletResponse`类来实现文件下载。具体代码如下: ```java @RequestMapping(value = "/download", method = RequestMethod.GET) public void download(HttpServletRequest request, HttpServletResponse response) { // 获取上传文件的存储路径(可以根据实际情况修改) String path = request.getSession().getServletContext().getRealPath("/upload/"); // 获取文件名 String fileName = "test.txt"; // 创建文件对象 File file = new File(path + File.separator + fileName); try { // 设置响应头,告诉浏览器该文件是一个下载文件 response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=" + new String(fileName.getBytes("UTF-8"), "ISO8859-1")); // 读取文件并写入到输出流中 InputStream in = new FileInputStream(file); OutputStream out = response.getOutputStream(); byte[] buffer = new byte[1024]; int len = 0; while ((len = in.read(buffer)) > 0) { out.write(buffer, 0, len); } in.close(); out.close(); } catch (Exception e) { e.printStackTrace(); } } ``` 以上示例中的文件名和存储路径可以根据实际情况进行修改。同时需要注意的是,文件上传下载的路径要保证存在,并且有足够的读写权限。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值