基础14——文件的上传和下载
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——文件的上传和下载相关推荐
- jsp+servlet实现文件的上传和下载
实现文件的上传和下载首先需要理解几个知识,这样才可以很好的完成文件的上传和下载: (1):上传文件是上传到服务器上,而保存到数据库是文件名 (2):上传文件是以文件转换为二进制流的形式上传的 (3): ...
- Akka实战:HTTP大文件断点上传、下载,秒传
2019独角兽企业重金招聘Python工程师标准>>> 访问:https://github.com/yangbajing/scala-applications/tree/master ...
- (十六)admin-boot项目之文件存储上传与下载minio
(十六)文件存储上传与下载 项目地址:https://gitee.com/springzb/admin-boot 如果觉得不错,给个 star 简介: 这是一个基础的企业级基础后端脚手架项目,主要由s ...
- 文件的上传和下载(超详细)
文件的上传和下载,是非常常见的功能.很多的系统中,或者软件中都经常使用文件的上传和下载. 比如:QQ 头像,就使用了上传. 邮箱中也有附件的上传和下载功能. OA 系统中审批有附件材料的上传. 1.文 ...
- 多类型文件的上传和下载
由于最近在做一个团队项目<办公OA管理系统>,我负责做公共事务,人事管理两大模块,今天做到一个页面要有一个上传和下载文件的功能,功能很简单,就是文件的上传和下载而已,这里只是分享一下过程, ...
- SpringMVC实现文件的上传和下载
SpringMVC实现文件的上传和下载http://www.bieryun.com/1120.html 前些天一位江苏经贸的学弟跟我留言问了我这样一个问题:"用什么技术来实现一般网页上文件的 ...
- 初学Java Web(7)——文件的上传和下载
文件上传 文件上传前的准备 在表单中必须有一个上传的控件 <input type="file" name="testImg"/> 因为 GET 方式 ...
- SpringMVC实现文件的上传与下载
文件的上传与下载可以说是工作中经常使用的功能,现在整理一下,希望能够给大家一个参考.这里以 Maven 的形式来创建项目,相关的配置文件会把主要的内容列出来,其他头文件信息不再一一全部的列出.最后会把 ...
- java实现ftp文件的上传与下载
最近在做ftp文件的上传与下载,基于此,整理了一下资料.本来想采用java自带的方法,可是看了一下jdk1.6与1.7的实现方法有点区别,于是采用了Apache下的框架实现的... 1.首先引用3个包 ...
- FastDFS:Java客户都实现文件的上传、下载、修改、删除
FastDFS:Java客户都实现文件的上传.下载.修改.删除 <project xmlns="http://maven.apache.org/POM/4.0.0" xmln ...
最新文章
- R语言使用yardstick包的gain_curve函数评估多分类(Multiclass)模型的性能、并使用autoplot函数可视化模型在每个交叉验证(或者重采样)的每一折fold在每个分类上的增益
- nf_hook_slow函数
- WAVE SUMMIT平行论坛 :产教融合,人才共育
- 网络营销之下的泡泡玛特盲盒广受年轻用户群体的喜爱与关注
- python菜鸟excel教程-Python操作Excel的Xlwings教程(一)
- 调用自定义函数search(int list[], int n),在数组中查找某个数
- sklearn的简单使用
- mysql列别_MySQL基础及CRUD
- Web Storage中的sessionStorage和localStorage
- android防谷歌滑动效果,谷歌是如何做到这一点的?在Android应用程序中滑动ActionBar...
- 后疫情时代,那些迎来爆发机会的产业
- 传递json_开发技巧分享—JSON 数据格式及函数讲解
- TIOBE 6 月编程语言排行榜:Java 放缓,C 复兴了!
- LeetCode—数据库简单题(三)
- AI,大数据,复杂系统最精25本大书单(建议收藏)
- Win7如何删除家庭组
- vscode extensions
- 与时俱进的迅捷多功能转换器
- 台式计算机为什么数字输入不了,电脑小键盘不能输入数字该怎么办?
- 用ssms建sql server数据库和python连接到数据库