Java文件上传下载

在ApplicationContext.xml中添加:

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- one of the properties available; the maximum file size in bytes:10M -->
    <property name="maxUploadSize" value="10485760"/>          //最大上传文件大小限制
    <property name="defaultEncoding" value="utf-8"></property>
</bean>
在controller中实现上传:

@RequestMapping(value = "/fileUpload" , method = RequestMethod.POST)
public String fileUpload(Model model, HttpServletRequest reqeust, HttpServletResponse response) throws FileUploadException, IOException, InterruptedException{
   MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) reqeust;
   CommonsMultipartFile orginalFile = (CommonsMultipartFile) multipartRequest.getFile("filename");  //filename是form表单的名字
   if (orginalFile != null && !orginalFile.isEmpty()) {
       String filename = orginalFile.getOriginalFilename();
       DataOutputStream out = new DataOutputStream(new FileOutputStream(OpenstackUtil.getConfig("swift.fileupload") + File.separator + filename));// 存放文件的绝对路径
       InputStream is = null;
       try {
           is = orginalFile.getInputStream();
           byte[] buffer=new byte[is.available()];
           is.read(buffer);
           out.write(buffer);
       } catch (IOException exception) {
           exception.printStackTrace();
       } finally {
           if (is != null) {
               is.close();
           }
           if (out != null) {
               out.close();
           }
       }
       return FILE_MODULE_HOME + "/tr";
    }else {
        log.info("upload file error");
        return FILE_MODULE_HOME + "upload";
    }
}

上传到数据库的blob字段

@RequestMapping(value = "/upload")
public void addAnnouncements(TestVo testVo, HttpServletRequest request, HttpServletResponse response) {
    response.setContentType("text/html;charset=utf-8");
    PrintWriter writer = null;
    try {
        writer = response.getWriter();
    } catch (IOException e1) {
        log.error(e1.getMessage(), e1);
        return;
    }
    try {
        CommonsMultipartResolver commonsMultipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
        MultipartFile file = null;
        if (commonsMultipartResolver.isMultipart(request)) {
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
            file = multipartRequest.getFile("taskspacurl");
            if (file == null || file.isEmpty() || file.getSize() == 0) {
                testService.createRecord(testVo, null, null);
} else { testService.createRecord(announcementsVo, file.getBytes(), file.getOriginalFilename()); } } writer.write(ServerUtil.builSuccessResponseString(null,"")); return; } catch (Exception e) { writer.write(ServerUtil.buildErrorResponseString(e.getMessage())); log.error(e.getMessage(), e); }}


下载blob文件
@RequestMapping(value="/downloadattachfile")
public void downloadSubTaskspac (Model model, String id, HttpServletRequest request, HttpServletResponse response) {
    Test test = testService.findById(id);
    if (test!= null) {
        try {
            String fileName = test.getAttachFileName();
            fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1");
            response.addHeader("Content-Disposition", "attachment;filename="+fileName);
            response.setContentType("text/html;charset=utf-8");
            response.setContentType("application/Unknown");
            ByteArrayInputStream inputStream = new ByteArrayInputStream(test.getAttachFile().getBytes(1, (int)test.getAttachFile().length()));
            OutputStream os = response.getOutputStream();
            byte[] buffer = new byte[1024];
            int length = 0;
            while((length = inputStream.read(buffer)) != -1) {
                os.write(buffer, 0, length);
            }
            os.flush();
            os.close();
            inputStream.close();
        } catch (Exception e) {
            log.error(e.getMessage(), e);
        }
    }
}
下载服务器端resources目录下的文件
@RequestMapping(value = "/downloadFile", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public void downloadActivex(HttpServletRequest request, HttpServletResponse response) {
    try {
        File file = new File(request.getServletContext().getRealPath("/") + "\\resources\\documents\\file.rar");
        String filename = file.getName();
        // 取得文件的后缀名。
        //String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();
        InputStream fis = new BufferedInputStream(new FileInputStream(request.getServletContext().getRealPath("/") + "\\resources\\documents\\file.rar"));
        byte[] buffer = new byte[fis.available()];
        fis.read(buffer);
        fis.close();
        response.reset();
        response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("UTF-8"), "ISO-8859-1"));
        response.addHeader("Content-Length", "" + file.length());
        OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
        response.setContentType("application/octet-stream");
        toClient.write(buffer);
        toClient.flush();
        toClient.close();
    } catch (IOException ex) {
        ex.printStackTrace();
    }
}




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值