下面是一个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上传下载的更多相关文章

  1. servlet上传下载(任何格式的都可以)

    jar不能低于此版本,JDK1.6以上,否则户报错 <dependency> <groupId>commons-fileupload</groupId> <a ...

  2. Servlet 上传下载文件

    上传文件 1)在表单中使用表单元素 <input type=“file” />,浏览器在解析表单时,会自动生成一个输入框和一个按钮 2)表单需要上传文件时,需指定表单 enctype 的值 ...

  3. servlet上传与下载

    上传页面 上传学生信息 学号  姓名  密码  性别 男 女 年龄  身高  学院  计算机学院 软件学院 照片  简历 <!DOCTYPE html> <html lang=&qu ...

  4. Java基础——Servlet(八)文件上传下载

    一.简单的文件上传常见的组件Smartupload , Apache 的 commons FileUploadSmartupload上传的步骤: 1.初始化上传上下文 2.准备上传 3.保存文件 &l ...

  5. [转]JSP或servlet中(以及上传下载文件)中文乱码或不显示的解决方案

    时间 2014-04-14 14:33:44  CSDN博客 原文  http://blog.csdn.net/xby1993/article/details/23677375 主题 ServletJ ...

  6. jsp+servlet实现文件上传下载

    相关素材下载 01.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  7. Servlet文件上传下载

    今天我们来学习Servlet文件上传下载 Servlet文件上传主要是使用了ServletInputStream读取流的方法,其读取方法与普通的文件流相同. 一.文件上传相关原理 第一步,构建一个up ...

  8. 基于Spring Mvc实现的Excel文件上传下载

    最近工作遇到一个需求,需要下载excel模板,编辑后上传解析存储到数据库.因此为了更好的理解公司框架,我就自己先用spring mvc实现了一个样例. 基础框架 之前曾经介绍过一个最简单的spring ...

  9. Javaweb学习笔记——上传下载文件

    一.前言 在Javaweb中,上传下载是经常用到的功能,对于文件上传,浏览器在上传的过程中是以流的过程将文件传给服务器,一般都是使用commons-fileupload这个包实现上传功能,因为comm ...

随机推荐

  1. MYSQL PROCEDURE 测试用例

    /** * 查询俱协信息 */ DROP PROCEDURE IF EXISTS `get_club_list`; DELIMITER $$ CREATE PROCEDURE `get_club_li ...

  2. 图片在IE8浏览器多一个有边框问题解决办法

    最后在网上找了一下答案,IE8浏览器图片多一个有色边框,而Chrome浏览器没有边框的解决办法.   指定img的边框样式:   img{border-style:none;}

  3. PHP自动加载SPL的四种处理方式

    libs目录下有3个类文件: Test.class.php <?php class Test { public function __construct() { echo "Loadi ...

  4. CLR总览

    Contents 第1章CLR的执行模型... 4 1.1将源代码编译成托管代码模块... 4 1.2 将托管模块合并成程序集... 6 1.3加载公共语言运行时... 7 1.4执行程序集的代码.. ...

  5. jenkins windows slave 报错ERROR: Error cloning remote repo 'origin'

    在slave上是git clone ssh是可以成功的,但是jenkins调用slave节点就报如下错误: ERROR: Error cloning remote repo 'origin' huds ...

  6. sjw-风评评测-定位页面元素

    一.手工标准化操作流程: 1.登录系统 2.登录后的页面点击:账户设置 3.点击“重新评测”,进入到风险评测页面 4.答完8道题 5.勾选条件checkbox 6.点击“提交” 提交后的页面 二.自动 ...

  7. iOS UI基础-19.0 UICollectionView

    直接上代码,说明请看注释吧 1.继承三个代理 UICollectionViewDataSource,UICollectionViewDelegate,UICollectionViewDelegateF ...

  8. jQuery-animate万能动画效果

    问题:效果受局限 解决:万能动画函数:animate() animation()可对数值类型的CSS样式执行定时器动画 包括:宽高,位置,透明度,边框宽度,字体大小 强调:不能对非数值类型属性做动画 ...

  9. asp.net webapi 404/或无效控制器/或无效请求 截取处理统一输出格式

    public static class PreRouteHandler     {         public static void HttpPreRoute(this HttpConfigura ...

  10. armv8 memory system

    在armv8中,由于processor的预取,流水线, 以及多线程并行的执行方式,而且armv8-a中,使用的是一种weakly-ordered memory model, 不保证program or ...