下面是一个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. 将 context node 中的内容 分配给 desing layer

    1 将 context node 中的内容 分配给 desing layer 选中context node 右键>assignment to design layer.

  2. openvpn-客户端配置文件

    ############################################## # 针对多个客户端的OpenVPN 2.0 的客户端配置文件示例 # # 该配置文件可以被多个客户端使用, ...

  3. 【LeetCode每天一题】Fibonacci Number(斐波那契数列)

    The Fibonacci numbers, commonly denoted F(n) form a sequence, called the Fibonacci sequence, such th ...

  4. Stephen Wolfram自述

    Stephen Wolfram自述   作者: 阮一峰 大家听说过Stephen Wolfram(斯蒂芬·沃尔夫勒姆)吗? 了解他的经历和成就吗? 我对他了解不多,但是读了下面这篇2005年的演讲,联 ...

  5. 关于 服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF 错误

    用WebClient 去下载数据时发现有服务器提交了协议冲突. Section=ResponseHeader Detail=CR 后面必须是 LF错误,解决办法 1.在app.config种添加 we ...

  6. android获取通讯记录,sim卡和手机

    //获取手机和手机卡通讯录 public static String getContacts() { String szContacts = ""; szContacts=getP ...

  7. AsssetBunlder打包

    unity3d,资源过多的话.可以压缩成一个资源包.加载出来后.可以解压.找到自己需要的资源 就想.net网站.很多图标都是放一个大图片上.而不是一个图标就是一个图片 因为是在项目编辑时候给资源打包. ...

  8. AIX挂载NFS写入效率低效解决

    背景: Linux是NFS的Server端,AIX是NFS的Client端(此外,有一个Linux也作为Client端对比测试). 1.NFS对应的底层设备是闪存卡,本地测试I/O写性能可达2GB/s ...

  9. struts实现邮件发送功能

    在实现邮件发送的时候首先需要用到mail.jar开发包,有关mail.jar的下载可以去百度自行下载 下面是邮件发送核心代码 package com.yysj.lhb.action; import j ...

  10. html5-css综合练习

    div{    width: 600px;    height: 800px;    padding: 40px;    font-size: 12px;    line-height: 25px;  ...