SmartUpload组件简介
- SmartUpload组件
- 专门用于实现文件上传及下载的免费组件
- SmartUpload组件特点
- 使用简单:编写少量代码,完成上传下载功能
- 能够控制上传内容
- 能够控制上传文件的大小、类型
- 缺点:目前已停止更新服务
SmartUpload组件应用
- 单文件上传
- 混合表单上传
- 多文件上传
- 控制上传文件的格式
- 设定文件上传的大小
SmartUpload组件应用条件
- 环境准备
- 使用SmartUpload组件需要在项目中引入jspsmartupload.jar文件
- 将jspsmartupload.jar 添加到WEB-INF\lib目录下
- 需要设置表单的enctype属性
- <form enctype="multipart/form-data" method="post">
- 使用SmartUpload组件需要在项目中引入jspsmartupload.jar文件
设置了enctype属性后, 表单必须以post方式提交(文件的提交方式必须是post)
SmartUpload类及方法
- SmartUpload类
属性名称 | 说明 |
public final void initialize(PageContext pageContext) | 执行上传和下载的初始化工作,必须实现 |
public void upload() | 实现文件数据的上传,在initialize方法后执行 |
public int save(String pathName) | 将全部上传文件保存到指定的目录下,并返回保存的文件个数 |
public void setAllowFilesList(String ExtList) | 指定允许上传的文件扩展名,接收一个扩展名列表,以逗号分隔 |
public void setDeniedFilesList ( String fileList) | 指定了禁止上传的文件扩展名列表,每个扩展名之间以逗号分隔 |
public void setMaxFileSize(long filesize) | 设定每个文件允许上传的最大长度 |
public void setTotalMaxFileSIze(long totalfilesize) | 设定允许上传文件的总长度 |
Files类及方法
- Files类
- 封装了所有上传文件的信息集合
- 常用方法
属性
属性名称 | 说明 |
public int getCount() | 取得文件上传的数目 |
public File getFile(int index) | 取得指定位置的File文件对象 |
public long getSize() | 取得上传文件的总长度 |
public Files getFiles() | 将所有上传文件对象以Collection的形式返回 |
方法
方法名称 | 说明 |
saveAs(String destFilePathName) | 将文件保存,参数destFilePathName是保存的文件名 |
isMissing( ) | 判断用户是否选择了文件,即对应表单项是否为空,返回值为boolean类型 |
public String getFiledName( ) | 获取表单中当前上传文件所对应的表单项的名称 |
public String getFileName( ) | 获取上传文件的文件名称,不包含路径 |
单文件上传的实现
第一步:创建一个JavaWeb项目,配置pom.xml文件,导入SmartUpload组件的jar包
因为我们创建的是一个maven项目,如果在使用直接在项目中添加lib的方式导包就不太合适了,所以应该将jar包交给maven统一管理,但是SmartUpload组件已经停止更新了,我们无法从中央仓库拉取对应的jar包,所以我们需要手动添加jar包到本地仓库
百度网盘:SmartUpload的jar包
阿里云盘:SmartUpload的jar包
1.首先在idea中创建一个JavaWeb项目
可以在External Libraries中查看我们添加到库中的jar包。(因为我的项目已经添加过smartuploadjar包了,所以在这里显示了)
2.配置pom.xml,并在本地仓库添加smartuplaod的jar包
打开本地的maven仓库
添加文件夹层级(在maven中,每个groupId、artifactId和version都是一个文件夹,jar包被一层一层的放在这些文件夹中,目的是区分不同的jar包)
本地资源管理器:
pom.xml中的写法:
完整的pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>fileupload_demo</artifactId><packaging>war</packaging><version>1.0-SNAPSHOT</version><name>fileupload_demo Maven Webapp</name><url>http://maven.apache.org</url><dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.21</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>smartupload</groupId><artifactId>smartupload</artifactId><version>1.0</version><scope>system</scope><systemPath>D:/maven/maven-3.9.9/repository/smartuplaod/smartupload/1.0/smartupload.jar</systemPath></dependency></dependencies><build><finalName>huihua_0914</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.8</source><target>1.8</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>3.3.2</version></plugin><plugin><groupId>org.eclipse.jetty</groupId><artifactId>jetty-maven-plugin</artifactId><version>9.3.14.v20161028</version></plugin><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.1</version><configuration><port>8080</port><path>/my_maven_pro</path><uriEncoding>UTF-8</uriEncoding><server>tomcat7</server></configuration></plugin></plugins></build>
</project>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0"><display-name>Archetype Created Web Application</display-name>
</web-app>
第二步:创建文件上传页面
up.html
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<form action="/up" enctype="multipart/form-data" method="post"><input type="file" name="up" id="up"><br/><input type="submit" value="提交">
</form></body>
</html>
第三步:创建处理文件上传请求的Servlet类
UploadServlet
package servlet;import com.jspsmart.upload.SmartUpload;
import com.jspsmart.upload.SmartUploadException;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 java.io.IOException;@WebServlet("/up")
public class UploadServlet extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {doPost(req,resp);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {SmartUpload sm =new SmartUpload();sm.initialize(this.getServletConfig(),request,response);sm.setCharset("UTF-8");try {sm.upload();sm.save("/upfiles");} catch (Exception e) {e.printStackTrace();}}
}
手动创建一个upfiles文件夹用来保存上传的文件
单文件上传测试
选择文件
提交文件,并查看upfiles文件夹
总结
以上就是借助SmartUpload组件实现文件上传功能的简单实现。重点理解如果在maven项目中导入一个中央仓库不存在的jar包