1.前述:文件的上传(文件上传到服务器)与下载(从服务器中下载文件)的方法很多,这里主要介绍的是jspSmartUpload实现文件的上传和下载。

2.jspSmartUpload简介

jspSmartUpload具有以下的优点:

1)配置非常简单:用户只需要把下载的jspSmartUpload.jar文件放在web项目的WEB-INF\lib目录下即可。

2)对上传的文件具有很强的可控性:jspSmartUpload可以限制上传文件的扩展名,大小等。

3)易获取上传文件的信息:使用jspSmartUpload自带的File类可以轻松地获取上传文件的信息,例如文件名,文件大小,扩展名等。

4)实现文件下载方便:使用jspSmartUpload仅需要几行代码就可以实现文件下载。

5)jspSmartUpload包提供了5个类,即File,Files,Request,SmartUpload和SmartUploadException(自定义异常类)。

3.jspSmartUpload包的类的具体方法介绍

百度一大堆,这边就不细贴了,有空的时候再搞。

4.文件上传的实例

test.jsp文件

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><form action="/upload/ServletUpload" method="post" enctype="multipart/form-data"><input type="file" name="fileName"><br/><input type="submit" name="upload" value="上传"></form>
</body>
</html>

uploadServlet文件

package com.upload;import java.io.IOException;
import java.util.Date;import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.jspsmart.upload.File;
import com.jspsmart.upload.Files;
import com.jspsmart.upload.Request;
import com.jspsmart.upload.SmartUpload;
import com.jspsmart.upload.SmartUploadException;/*** Servlet implementation class ServletUpload*/
@WebServlet("/ServletUpload")
public class ServletUpload extends HttpServlet {//声明servletconfig对象,作为initialize()方法的参数ServletConfig servletconfig;public ServletUpload() {super();}//初始化servletconfig对象public void init(ServletConfig config)throws ServletException{this.servletconfig=config;}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//1.实例化一个SmartUpload()对象SmartUpload su=new SmartUpload();//2.初始化SmartUpload对象try {su.initialize(servletconfig, request, response);}catch (ServletException e) {e.printStackTrace();}//3.设置文件上传的限制su.setAllowedFilesList("doc,docx,txt");//单个文件的最大字节数su.setMaxFileSize(3*1024*1024);//文件的总最大字节数su.setTotalMaxFileSize(12*1024*1024);//使用upload上传try {su.upload();}catch (ServletException e) {e.printStackTrace();// TODO: handle exception}catch (IOException e) {e.printStackTrace();}catch (SmartUploadException e) {// TODO Auto-generated catch blocke.printStackTrace();}//5.文件的保存Date curDate=new Date();long d=curDate.getTime();//long型//创建request对象Request req=su.getRequest();//获取上传文件//获取全部上传文件Files files=su.getFiles();//获取指定位置的文件File file=files.getFile(0);//获取文件扩展名String extFile=file.getFileExt();String mainFile=String.valueOf(d);//文件上传到服务器端的upload目录下,文件以当前时间命名String filename="/upload/"+mainFile+"."+extFile;System.out.println(filename);try{file.saveAs(filename);}catch (IOException e) {e.printStackTrace();} catch (SmartUploadException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

注意:在我们的webcontent里面需要自己去建立一个与servlet里面的指定的filename的目录。比如说这边是upload,然后将我们的项目部署到我们的tomcat里面去。

实例结果:

总结:上传功能的具体步骤为:

1)实例化SmartUpload对象。

2)使用initialize()方法初始化SmartUpload对象,如果直接在jsp页面中使用该方法,则推荐使用initialize(PageContext pageContext)形式;若在

Servlet程序中,推荐使用initialize(ServletConfig servletconfig,HttpServletRequest request,HttpServletResponse response)形式。

3)使用setMaxFileSize()方法设置上传文件的大小,类型等。

4)使用upload()方法上传文件。

5)使用save()方法将上传文件保存至web应用程序的指定目录下。

注意:这五个步骤不可以调换顺序,并且在运行上传文件之前,服务器端的web项目必须存在指定的上传文件保存目录。也就是上面说的upload文件。

5.文件下载的实例

jsp文件:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><a href="/upload/DownloadServlet">下载文件</a>
</body>
</html>

servlet文件:

package com.upload;import java.io.IOException;import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import com.jspsmart.upload.SmartUpload;
import com.jspsmart.upload.SmartUploadException;/*** Servlet implementation class DownloadServlet*/
@WebServlet("/DownloadServlet")
public class DownloadServlet extends HttpServlet {ServletConfig config=null;public DownloadServlet() {super();// TODO Auto-generated constructor stub}public void init(ServletConfig config)throws ServletException{this.config=config;}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doPost(request,response);}/*** @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)*/protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {//新建一个SmartUpload对象SmartUpload su=new SmartUpload();//初始化su.initialize(config, request, response);/** 设定contentdisposition为null以禁止浏览器自动打开文件,保证单击链接后是下载文件。若不设定,则下载的文件扩展名为.doc时* 浏览器将自动用word打开它,当扩展名为.pdf时,浏览器将要pdf阅读器打开它*/su.setContentDisposition(null);//下载文件try {//假设下载的文件为upload下的txt文件su.downloadFile("/upload/a.txt");}catch (SmartUploadException e) {e.printStackTrace();}}}

  

效果图:

 总结:实现下载的具体步骤为:

1)实例化smartUpload对象

2)使用initialize()方法初始化SmartUpload对象

3)使用setContentDisposition()方法设置MIME类型。

4)使用downloadFIle从指定位置下载文件

转载于:https://www.cnblogs.com/lpd1/p/7957193.html

基础14——文件的上传和下载相关推荐

  1. jsp+servlet实现文件的上传和下载

    实现文件的上传和下载首先需要理解几个知识,这样才可以很好的完成文件的上传和下载: (1):上传文件是上传到服务器上,而保存到数据库是文件名 (2):上传文件是以文件转换为二进制流的形式上传的 (3): ...

  2. Akka实战:HTTP大文件断点上传、下载,秒传

    2019独角兽企业重金招聘Python工程师标准>>> 访问:https://github.com/yangbajing/scala-applications/tree/master ...

  3. (十六)admin-boot项目之文件存储上传与下载minio

    (十六)文件存储上传与下载 项目地址:https://gitee.com/springzb/admin-boot 如果觉得不错,给个 star 简介: 这是一个基础的企业级基础后端脚手架项目,主要由s ...

  4. 文件的上传和下载(超详细)

    文件的上传和下载,是非常常见的功能.很多的系统中,或者软件中都经常使用文件的上传和下载. 比如:QQ 头像,就使用了上传. 邮箱中也有附件的上传和下载功能. OA 系统中审批有附件材料的上传. 1.文 ...

  5. 多类型文件的上传和下载

    由于最近在做一个团队项目<办公OA管理系统>,我负责做公共事务,人事管理两大模块,今天做到一个页面要有一个上传和下载文件的功能,功能很简单,就是文件的上传和下载而已,这里只是分享一下过程, ...

  6. SpringMVC实现文件的上传和下载

    SpringMVC实现文件的上传和下载http://www.bieryun.com/1120.html 前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:"用什么技术来实现一般网页上文件的 ...

  7. 初学Java Web(7)——文件的上传和下载

    文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...

  8. SpringMVC实现文件的上传与下载

    文件的上传与下载可以说是工作中经常使用的功能,现在整理一下,希望能够给大家一个参考.这里以 Maven 的形式来创建项目,相关的配置文件会把主要的内容列出来,其他头文件信息不再一一全部的列出.最后会把 ...

  9. java实现ftp文件的上传与下载

    最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...

  10. FastDFS:Java客户都实现文件的上传、下载、修改、删除

    FastDFS:Java客户都实现文件的上传.下载.修改.删除 <project xmlns="http://maven.apache.org/POM/4.0.0" xmln ...

最新文章

  1. R语言使用yardstick包的gain_curve函数评估多分类(Multiclass)模型的性能、并使用autoplot函数可视化模型在每个交叉验证(或者重采样)的每一折fold在每个分类上的增益
  2. nf_hook_slow函数
  3. WAVE SUMMIT平行论坛 :产教融合,人才共育
  4. 网络营销之下的泡泡玛特盲盒广受年轻用户群体的喜爱与关注
  5. python菜鸟excel教程-Python操作Excel的Xlwings教程(一)
  6. 调用自定义函数search(int list[], int n),在数组中查找某个数
  7. sklearn的简单使用
  8. mysql列别_MySQL基础及CRUD
  9. Web Storage中的sessionStorage和localStorage
  10. android防谷歌滑动效果,谷歌是如何做到这一点的?在Android应用程序中滑动ActionBar...
  11. 后疫情时代,那些迎来爆发机会的产业
  12. 传递json_开发技巧分享—JSON 数据格式及函数讲解
  13. TIOBE 6 月编程语言排行榜:Java 放缓,C 复兴了!
  14. LeetCode—数据库简单题(三)
  15. AI,大数据,复杂系统最精25本大书单(建议收藏)
  16. Win7如何删除家庭组
  17. vscode extensions
  18. 与时俱进的迅捷多功能转换器
  19. 台式计算机为什么数字输入不了,电脑小键盘不能输入数字该怎么办?
  20. 用ssms建sql server数据库和python连接到数据库

热门文章

  1. 数据预处理第2讲:非线性变换
  2. eclipse 添加jar (servlet api)
  3. CentOS虚拟机挂载U盘
  4. 对于Typora(markdown)的基本使用
  5. C++自己实现一个String类
  6. day34 GIL锁,线程队列,线程池
  7. 【Windows】DOS的常用命令
  8. 【转】Using hash_map on GCC
  9. 【转】vc6.0配置STLPort
  10. 洛谷 P2473 [SCOI2008]奖励关 解题报告