文件上传和文件下载

原创 2016年08月30日 19:34:30

文件上传:

1.首先,设计前台页面。

要在form表单中加上 enctype="multipart/form-data",指明接收请求的Servlet。

<form action="upload" method="post" enctype="multipart/form-data" >
  <span>上传文件</span><input type="file" name="filename" value="上传">
</form>

2.开发后台的Servlet。

2.1 在上传文件的Servlet上打注解:@MultipartConfig

2.2. 获取前台页面选择的文件名。

原理分析:在firebug上看到的文件上传的请求头为:

Content-Type: multipart/form-data; boundary=---------------------------16593218025140
Content-Length: 34211

-----------------------------16593218025140
Content-Disposition: form-data; name="fname"; filename="session (1).png"
Content-Type: image/png

每个文件都是一个Part,以前台的name属性标记,filename="session (1).png"为上传的文件名。

取出文件名:

request.setCharacterEncoding("utf-8");
Part part = request.getPart("filename");
        //获得上传的文件名
        String header = part.getHeader("Content-Disposition");
        int start = header.lastIndexOf("=");
        int end=header.lastIndexOf("\"");
        String fname= header.substring(start+2, end);
        System.out.println(fname);

如果上传多个文件,Collection<Part> parts = request.getParts(); 遍历parts,依次获取文件名。

2.3 将上传的文件存放在指定的路径下。


String path=request.getRealPath("/");//获取部署到tomcat下的文件路径
         System.out.println(path);
         String filename=path+fname;
         part.write(filename);

文件下载:

1.设置响应的文件类型

response.setContentType("application/octet-stream");

2.Response设置响应头Content-Dispostion,指定要下载的文件和下载方式。

response.setHeader("Content-Disposition", "attachment; filename=" + java.net.URLEncoder.encode(fileName, "UTF-8"));

attachment:表示文件输出流会以附件的方式下载

3.读文件到输入流,写到response对象的输出流中,将数据刷新到磁盘

InputStream in=new FileInputStream(request.getRealPath("/")+fname);
        ServletOutputStream out = response.getOutputStream();
        byte[] b=new byte[1024];
        int len=0;
        while((len=in.read(b))!=-1){
            out.write(b,0,len);
        }
        //将数据刷新到磁盘
        out.flush();

SpringMVC之文件上传与下载

学习一个框架少不了学习文件上传和下载,原理来说上传和下载都是基本二进制流的转换,所以搞清楚了这一点就很容易理解上传和下载了 在使用springMVC进行系统实现时,springMVC默认的解析器里...
  • CarryBest
  • CarryBest
  • 2017年04月21日 09:12
  • 614

SpringBoot下文件上传与下载的实现

本文欢迎转载,转载请注明出处,谢谢~(作者:喝酒不骑马 Colton_Null) from CSDNSpringBoot后台如何实现文件上传下载?最近做的一个项目涉及到文件上传与下载。前端上传采用百...
  • Colton_Null
  • Colton_Null
  • 2017年08月05日 00:40
  • 2702

SpringMVC学习记录(四)--文件上传与下载

学习一个框架少不了学习文件上传和下载,原理来说上传和下载都是基本二进制流的转换,所以搞清楚了这一点就很容易理解上传和下载了在使用springMVC进行系统实现时,springMVC默认的解析器里面是没...
  • u012706811
  • u012706811
  • 2016年04月04日 23:17
  • 17198

SSM框架-SpringMVC 实例文件上传下载

目录(?)[+]   林炳文Evankaka原创作品。转载请注明出处http://blog.csdn.net/evankaka 本文详细讲解了SpringMVC实例单文件上传、多文件上传、...
  • lcx556224523
  • lcx556224523
  • 2017年04月17日 09:38
  • 9269

struts2完美实现文件上传和下载

## struts2完美实现文件上传和下载 ##
  • zjl16
  • zjl16
  • 2016年01月14日 11:59
  • 3803

springmvc文件上传和文件下载

1.首先springMVC的配置文件: ...
  • chentao866
  • chentao866
  • 2017年05月11日 11:18
  • 90

struts2文件下载和文件上传

【正式开始前的唠嗑】——春节假期还是如期而终,各位小伙伴是不是和我一样患上了“假期综合症”呢?工作状态简直太差了!博客也好久没写了,现在来总结总结struts2中文件的下载和上传!   Part1...
  • qq_18875541
  • qq_18875541
  • 2017年04月06日 15:56
  • 193

文件上传和下载——文件下载

我们做完文件上传之后,就要来做文件下载了。 Web应用中实现文件下载的方式: 超链接直接指向下载资源。 程序实现下载需设置两个响应头: 设置Content-Type的值为:application...
  • yerenyuan_pku
  • yerenyuan_pku
  • 2016年09月14日 22:43
  • 1433

文件上传与下载Demo

上传、下载、列表展示,删除操作servletpublic class FileServlst extends HttpServlet{ @Override protected void...
  • u010512964
  • u010512964
  • 2017年06月01日 11:14
  • 667

Struts2+jsp上传和下载文件

基于Struts2.0和jsp的文件上传
  • u012982637
  • u012982637
  • 2017年11月19日 19:37
  • 69
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:文件上传和文件下载
举报原因:
原因补充:

(最多只允许输入30个字)