Java Spring MVC 上传下载文件配置及controller方法详解

作者:回魔一笑 时间:2023-11-22 04:13:59 

下载:

1.在spring-mvc中配置(用于100M以下的文件下载)


<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<!--配置下载返回类型-->
<bean class="org.springframework.http.converter.ByteArrayHttpMessageConverter"/>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<!--配置编码方式-->
<property name="supportedMediaTypes" value="application/json; charset=UTF-8" />
</bean>
</list>
</property>
</bean>

下载文件代码


@RequestMapping("/file/{name.rp}")
public ResponseEntity<byte[]> fileDownLoad(@PathVariable("name.rp")String name, HttpServletRequest request,HttpServletResponse response) {
// @PathVariable String name,
// @RequestParam("name")String name,
// System.out.println("<name>"+name);
// System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
ResponseEntity<byte[]> re = null;
try {
/**
* css,js,json,gif,png,bmp,jpg,ico,doc,docx,xls,xlsx,txt,swf,pdf
* **/
//下载防止静态加载干扰
Feelutile f=new Feelutile();
name=f.getfileformat(name);
String pathString="C:\\tempDirectory\\"+name;
File file=new File(pathString);
HttpHeaders headers=new HttpHeaders();
//String filename=URLEncoder.encode(name, "UTF-8");//为了解决中文名称乱码问题
String filename=new String(name.getBytes("utf-8"),"utf-8");
byte[] by=FileUtils.readFileToByteArray(file);
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
//URLEncoder.encode(filename, "UTF-8")
headers.setContentDispositionFormData("attachment",filename);
headers.setContentLength(by.length);
re=new ResponseEntity<byte[]>(by, headers, HttpStatus.CREATED);
} catch (Exception e) {
e.printStackTrace();
try {
request.getRequestDispatcher("/error/404.jsp").forward(request, response);
} catch (ServletException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
return re;
}

上传文件:

1在spring-mvc中配置


<!--4.文件上传 配置 file upload -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding">
<value>UTF-8</value>
</property>
<property name="maxUploadSize">
<value>1048576000</value>
</property>
<property name="maxInMemorySize">
<value>40960</value>
</property>
</bean>

在controller中代码如下


@RequestMapping(value="/upload", method = RequestMethod.POST)
@ResponseBody
public Json upload(Doc doc, @RequestParam("uploadFile") CommonsMultipartFile file) {
Json j = new Json();
try {
String realpath = this.servletContext.getRealPath("/upload");
String uploadFileFileName = file.getOriginalFilename();
String uploadFileFileNameWithoutSpace = uploadFileFileName.replaceAll(" ", "");
String fileType = uploadFileFileNameWithoutSpace.substring(uploadFileFileNameWithoutSpace.lastIndexOf("."));
File targetFile = new File(realpath+File.separator, uploadFileFileNameWithoutSpace);
if (targetFile.exists()) {
targetFile.delete();
}
file.getFileItem().write(targetFile);
docService.upload(doc,uploadFileFileNameWithoutSpace);
j.setSuccess(true);
j.setMsg("Upload manual successfully");
}catch (Exception e) {
logger.error(ExceptionUtil.getExceptionMessage(e));
j.setMsg("Upload manual unsuccessfully");
}
return j;
}

以上所述是小编给大家介绍的Java Spring MVC 上传下载文件配置及controller方法详解网站的支持!

来源:http://www.cnblogs.com/hongdw/archive/2016/09/30/5924115.html

标签:springmvc,controller,文件上传
0
投稿

猜你喜欢

  • Java语法基础之for语句练习

    2023-11-07 03:06:17
  • Java关于IO流的全面介绍

    2023-08-12 08:14:46
  • 如何使用Spring工具类动态匹配url

    2021-06-16 05:09:08
  • Unity3D实现飞机大战游戏(2)

    2021-11-16 10:41:38
  • Kotlin启动协程的三种方式示例详解

    2023-06-07 02:58:53
  • Groovy动态语言使用教程简介

    2022-04-28 15:05:54
  • spring-boot整合ehcache实现缓存机制的方法

    2023-06-18 20:05:10
  • 浅谈Java多线程编程中Boolean常量的同步问题

    2021-06-20 16:36:26
  • C#仿密保卡功能的简单实现代码

    2022-01-17 04:51:12
  • 使用Springboot封装一个自适配的数据单位转换工具类

    2022-06-07 07:12:14
  • SpringBoot 2.x 整合Lombok的方法示例

    2022-03-15 17:43:35
  • Java实现冒泡排序算法

    2023-07-13 03:02:28
  • Java中关于二叉树层序遍历深入了解

    2023-07-26 07:06:09
  • Spring工作原理简单探索

    2023-04-26 10:30:56
  • Java泛型之类型擦除实例详解

    2022-02-13 06:39:36
  • Idea如何导入一个SpringBoot项目的方法(图文教程)

    2022-08-10 22:40:49
  • 一篇文章带你搞懂Java线程池实现原理

    2021-10-23 05:45:36
  • Java实现斗地主最简代码实例

    2023-07-11 18:40:02
  • Java多线程Thread类的使用详解

    2023-11-11 13:08:11
  • Springboot实现阿里云通信短信服务有关短信验证码的发送功能

    2022-07-24 15:36:53
  • asp之家 软件编程 m.aspxhome.com