下面是一个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. 帝国cms-tab

    <ul class="intro_commenTab"> [e:loop={"select classname,classpath,classid from ...

  2. iText实现导出pdf文件java代码实现例子

    ///////////////////////////////////主类////////////////////////////////////////// package com.iText; i ...

  3. Centos7上安装Apache

    Apache HTTP服务器是世界上最流行的Web服务器. 它是一款免费的开源和跨平台的HTTP服务器,提供强大的功能,可以通过各种模块进行扩展. 以下说明介绍如何在CentOS 7机器上安装和管理A ...

  4. git-代码同步至github

    代码同步到github上 Last login: Wed Mar 27 13:53:06 on ttys001localhost:~ ligaijiang$ gitusage: git [--vers ...

  5. Go linux 实践3

    Go 的灵魂-goroutine(协程), channel(渠道) 看看吧,不多说了 ************************************************ package ...

  6. iOS 新浪微博-3.0 新特性

    每个程序在第一次启动的时候,都会显示新特性.效果如下: 思路: 添加一个ViewController,里面放两个View,一个是UISrollView,另一个pageControl 往UISrollV ...

  7. selenium PO模式

    思想: 1.定义basepage.py用来写公共方法,比如找元素,打开url,切换frame.这样的部分都写在这里.不必每次用都重写. 2.LoginPage.py 每个功能模块一个文件或者一个类 这 ...

  8. java随机排座位

    //打乱学生顺序 Collections.shuffle(); 容我记个单词 peer: vi.凝视; 盯着看; 隐退,若隐若现; 同等,比得上;n.同辈,同等的人; 贵族; 同伴,伙伴;adj.贵族 ...

  9. oracle 常用(一)

    常用的6个分组函数: 注意点:where字句中不能使用组函数.要用到having函数. 但是从优化角度看,尽量使用where avg :平均值           sum:求和            ...

  10. js的基本包装类型

    基本包装类型(包装对象): 先看下以下代码: var s1 = "helloworld"; var s2 = s1.substr(4); 上面我们说到字符串是基本数据类型,不应该有 ...