Servlet上传下载
下面是一个jsp页面(method和enctype必须要有)
- //页面
<form action="file?file=upLoadByjs" method="post" enctype="multipart/form-data">- <input type="file" name=file1" /><Br>
- <input type="file" name=file2" /><Br>
- <input type="submit" value="上传">
- </form>
- enctype="multipart/form-data"会导致request取值取不到:
- su.getRequest().getParameter("btitle");解决取值
servlet处理程序:
- //新建一个jsmartUpLoad对象
- SmartUpload smartUpload = new SmartUpload();
- //上传初始化
- smartUpload.initialize(this.getServletConfig(),request,response);
- try {
- //设定上传限制
- //限制每个上传文件的最大长度;将最大设定为1024*1024*20,超过大小,后面取文件异常。
- smartUpload.setMaxFileSize(1024*1024*10);
- //限制总上传数据的长度
- smartUpload.setTotalMaxFileSize(1024*1024*20);
- //限制允许上传的文件类型、允许doc、txt、bat文件
- smartUpload.setAllowedFilesList("doc,txt,bat");
- //限制禁止上传的文件类型,禁止exe、jsp、和没有扩展名的文件
- smartUpload.setDeniedFilesList("exe,jsp,,");
- //上传文件
- smartUpload.upload();
- //将文件保存到指定的目录下,这个是全部上传到一个目录,名字不变save();有第二个参数,默认为SAVE_AUTO path为 /DDD 默认去找项目下面的DDD文件夹,如果没有,则去寻找目录所在盘符的根目录下DDD文件夹,如果都存在,优先第一个。与下面saveAs()一样。
- smartUpload.save(path);
- } catch (SQLException e) {
- e.printStackTrace();
- } catch (SmartUploadException e) {
- e.printStackTrace();
- }
- response.setContentType("text/html;charset=utf-8");
- PrintWriter out = response.getWriter();
- //逐一提取文件信息,同时输出上传文件的信息
- for (int i = 0; i < smartUpload.getFiles().getCount(); i++) {
- com.jspsmart.upload.File myFile =smartUpload.getFiles().getFile(i);
- myFile.saveAs(path);
- //若文件表单中的文件选项没有选择文件则继续
- if(myFile.isMissing())
- continue;
- //显示当前文件的信息
- out.println("<table border='1'>");
- out.println("<tr><td>表单选项</td><td>"+myFile.getFieldName()+"</td></tr>");
- out.println("<tr><td>文件长度:</td><td>"+myFile.getSize()+"</td></tr>");
- out.println("<tr><td>文件名</td><td>"+myFile.getFileName()+"</td></tr>");
- out.println("<tr><td>文件扩展名</td><td>"+myFile.getFileExt()+"</td></tr>");
- out.println("<tr><td>文件全名</td><td>"+myFile.getFilePathName()+"</td></tr>");
- out.println("</table><br>");
- }
- out.flush();
- out.close();
该程序直接使用SmartUploa对象来实现文件上传。在申请对象后,必须要对其进行初始化:smartUpload.initialize(this.getServletConfig(),request,response);
使用jspSmartUpload组件进行文件下载:
- <a href="${pageContext.request.contextPath }/file1?file=downByJsmart&name=user.txt">下载user</a>
- //获取下载文件名
- String fileName = request.getParameter("name");
- //新建一个smartUpload对象
- SmartUpload smartUpload = new SmartUpload();
- //初始化
- smartUpload.initialize(this.getServletConfig(), request, response);
- //设定contentDisposition为null以禁止浏览器自动打开文件
- //保证单击链接后是下载文件。
- smartUpload.setContentDisposition(null);
- //下载文件
- try {
- smartUpload.downloadFile("D:/work space/JSP workspace/jsp_servlet_upAndLoad/file/upLoad/"+fileName);
- } catch (SmartUploadException e) {
- e.printStackTrace();
- }
如果用的原生jsp:
- //下载
- SmartUpload smart=new SmartUpload();
- smart.initialize(config, request, response);
- smart.setContentDisposition(null);
- smart.downloadFile(sDocPath);
- out.clear();
- out = pageContext.pushBody();
- //上传
- SmartUpload smart=new SmartUpload();
- smart.initialize(pageContext);
- smart.upload();
- com.jspsmart.upload.File myFile = smart.getFiles().getFile(0);
- myFile.saveAs(filename);
Servlet上传下载的更多相关文章
- servlet上传下载(任何格式的都可以)
jar不能低于此版本,JDK1.6以上,否则户报错 <dependency> <groupId>commons-fileupload</groupId> <a ...
- Servlet 上传下载文件
上传文件 1)在表单中使用表单元素 <input type=“file” />,浏览器在解析表单时,会自动生成一个输入框和一个按钮 2)表单需要上传文件时,需指定表单 enctype 的值 ...
- servlet上传与下载
上传页面 上传学生信息 学号 姓名 密码 性别 男 女 年龄 身高 学院 计算机学院 软件学院 照片 简历 <!DOCTYPE html> <html lang=&qu ...
- Java基础——Servlet(八)文件上传下载
一.简单的文件上传常见的组件Smartupload , Apache 的 commons FileUploadSmartupload上传的步骤: 1.初始化上传上下文 2.准备上传 3.保存文件 &l ...
- [转]JSP或servlet中(以及上传下载文件)中文乱码或不显示的解决方案
时间 2014-04-14 14:33:44 CSDN博客 原文 http://blog.csdn.net/xby1993/article/details/23677375 主题 ServletJ ...
- jsp+servlet实现文件上传下载
相关素材下载 01.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...
- Servlet文件上传下载
今天我们来学习Servlet文件上传下载 Servlet文件上传主要是使用了ServletInputStream读取流的方法,其读取方法与普通的文件流相同. 一.文件上传相关原理 第一步,构建一个up ...
- 基于Spring Mvc实现的Excel文件上传下载
最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库.因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例. 基础框架 之前曾经介绍过一个最简单的spring ...
- Javaweb学习笔记——上传下载文件
一.前言 在Javaweb中,上传下载是经常用到的功能,对于文件上传,浏览器在上传的过程中是以流的过程将文件传给服务器,一般都是使用commons-fileupload这个包实现上传功能,因为comm ...
随机推荐
- 循环匹配出图片地址(即src属性)
<script type="text/javascript"> //思路分两步:作者(yanue). //1,匹配出图片img标签(即匹配出所有图片),过滤其他不需要的 ...
- abap异常处理 , update module
1:异常 https://www.cnblogs.com/rainysblog/p/6665455.html 2:update module https://www.cnblogs.com/cindy ...
- 关于时间的SQL语句
取当前时间: select current_timestamp; 输出:2016-06-16 16:12:52 select now(); 输出:2016-06-16 16:12:52 取当前时间的 ...
- (转)EOSIO开发(一)使用Docker构建本地环境
前言 一直想学习EOS开发,但是不知道怎么入门.最近从GitHub上下载了源码,发现官方已经提供了完整的EOSIO开发入门教程,既然如此赶紧开始行动.今天是系列文章的第一篇,介绍如何使用Docker搭 ...
- spring + mybatis配置及网络异常设置
Spring引入mybatis <beans xmlns="http://www.springframework.org/schema/beans" xmlns:contex ...
- [LeetCode] 603. Consecutive Available Seats_Easy tag: SQL
Several friends at a cinema ticket office would like to reserve consecutive available seats.Can you ...
- [LeetCode] Backtracking Template for (Subsets, Permutations, and Combination Sum)
根据issac3 用Java总结了backtracking template, 我用他的方法改成了Python. 以下为template. def backtrack(ans, temp, nums, ...
- plt.contour 与 plt.contourf
contour:轮廓,等高线 1.为等高线上注明等高线的含义: cs = plt.contour(x, y, z) plt.clabel(cs, inline=True, fontsize=10)#i ...
- 【网络设备】某防火墙基于IP地址的目的地址转换
由于来自Internet的对政府,企业的网络攻击日益频繁,因此需要对内网中向外网提供访问服务的关键设备进行有效保护.采用目的地址NAT可以有效地将内部网络地址对外隐藏. 图中:公网中Internet用 ...
- 005-IIS处理过程
PipeLine调用过程ISAPIRuntime ProcessReqeustHttpRuntime ProcessRequestNoDemand ProcessRequestNow ProcessR ...