基于SmartUpload组件实现文件上传功能的案例

SmartUpload组件简介

  • SmartUpload组件
    • 专门用于实现文件上传及下载的免费组件
  • SmartUpload组件特点
    • 使用简单:编写少量代码,完成上传下载功能
    • 能够控制上传内容
    • 能够控制上传文件的大小、类型
    • 缺点:目前已停止更新服务

 SmartUpload组件应用

  • 单文件上传
  • 混合表单上传
  • 多文件上传
  • 控制上传文件的格式
  • 设定文件上传的大小

SmartUpload组件应用条件

  • 环境准备
    • 使用SmartUpload组件需要在项目中引入jspsmartupload.jar文件
      • 将jspsmartupload.jar 添加到WEB-INF\lib目录下
    • 需要设置表单的enctype属性
      • <form enctype="multipart/form-data" method="post">

设置了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/javaee
          http://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 {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req,resp);
    }

    @Override
    protected 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包

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值