【文件上传】Java中使用smartupload工具类实现文件上传功能
程序员文章站
2022-06-18 13:56:15
...
文件上传
以前觉得这是个十分高大上的功能,结果发现,只要使用实用的工具类,五分钟就能搞定一个文件上传的功能了!
环境搭建
前提是已经搭建好开发环境。
- 创建JavaWEB项目
- Tomcat服务器安装
步骤
1. 下载工具类:smartupload
- 将其导入到项目的lib目录下
2. 写一个前端页面,此处是在jsp页面中写了一个form表单,命名为index.jsp
<%--
Created by IntelliJ IDEA.
User: Elvira
Date: 2020/11/16
Time: 20:47
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>主页</title>
</head>
<body>
文件上传:<br>
<form action="/upload" method="post" enctype="multipart/form-data">
名称:<input type="text" name="uname"><br>
文件:<input type="file" name="myfile"><br>
<input type="submit" value="上传">
</form>
</body>
</html>
- 表单提交跳转到请求名为/upload的servlet。
3. 控制上传的servlet,命名为UploadServlet。
- 在类名上方添加WebServlet注解:value为“/upload”,与表单跳转的请求名一致。
- 重写service方法。
- 上传文件
//1. 创建对象 SmartUpload smartUpload = new SmartUpload();
- 获得pageContext对象
//2. 初始化 PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(this, req, resp, null, false, 1024 * 5, true); smartUpload.initialize(pageContext);
- 设置编码方式
smartUpload.setCharset("utf-8");
- 上传
//实现文件数据的上传 smartUpload.upload();
- 保存文件
File file = smartUpload.getFiles().getFile(0);
- 得到文件的基本信息
String filename = file.getFileName(); //指定文件的路径 String url = "uploadfile/" + filename; //将上传文件保存到指定目录 file.saveAs(url, SmartUpload.SAVE_VIRTUAL); //是否保存成功?如果上传成功,页面中显示该文件。 req.setAttribute("filename",filename);
- 测试:除文件以外的参数如何获取
String uname = smartUpload.getRequest().getParameter("uname"); System.out.println("uname=" + uname);
- 跳转页面
这里一定要使用转发,要保存域里的数据。req.getRequestDispatcher("success.jsp").forward(req, resp);
- 上传文件
4. 上传成功会转发跳转至success.jsp页面,新建jsp页面。
- 如果上传成功,页面上会显示文件。
- 此处拿图片做测试。
<%-- Created by IntelliJ IDEA. User: Elvira Date: 2020/11/18 Time: 14:21 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> <h1>成功跳转至success.jsp,上传成功!</h1> <img src="uploadfile/${filename}"> </body> </html>
servlet完整代码
package web;
import com.jspsmart.upload.File;
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 javax.servlet.jsp.JspFactory;
import javax.servlet.jsp.PageContext;
import java.io.IOException;
/**
* @author Elvira
* @date 2020/11/17 20:56
* @description
*/
@WebServlet(value="/upload")
public class UploadServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//上传文件
//1. 创建对象
SmartUpload smartUpload = new SmartUpload();
//获得pageContext对象
//2. 初始化
PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(this, req, resp, null, false, 1024 * 5, true);
smartUpload.initialize(pageContext);
//3. 设置编码方式
smartUpload.setCharset("utf-8");
try {
//4. 上传
//实现文件数据的上传
smartUpload.upload();
//5. 保存文件
File file = smartUpload.getFiles().getFile(0);
//6. 得到文件的基本信息
String filename = file.getFileName();
//指定文件的路径
String url = "uploadfile/" + filename;
//将上传文件保存到指定目录
file.saveAs(url, SmartUpload.SAVE_VIRTUAL);
//是否保存成功?如果上传成功,页面中显示该文件。
req.setAttribute("filename",filename);
} catch (SmartUploadException e) {
e.printStackTrace();
}
//7. 测试:除文件以外的参数如何获取
String uname = smartUpload.getRequest().getParameter("uname");
System.out.println("uname=" + uname);
//8. 跳转页面
req.getRequestDispatcher("success.jsp").forward(req, resp);
}
}
效果
- 完成上述步骤,可以开启服务器查看一下效果。
前端效果图
-
点击选择文件,弹出窗口。
-
选择一张图片:兄妹.png,页面上显示兄妹.png,填写名称。
-
点击上传,页面跳转。
总结
这样一个文件上传的功能就完成了,smartupload工具真是强大!
推荐阅读
-
js实现文件上传功能 后台使用MultipartFile
-
Java Web使用Html5 FormData实现多文件上传功能
-
CentOS中使用Shell脚本实现每天自动备份网站文件和数据库并上传到FTP中
-
Electron中实现大文件上传和断点续传功能
-
MVC中基于Ajax和HTML5实现文件上传功能
-
Java实现拖拽文件上传dropzone.js的简单使用示例代码
-
PHP使用curl请求实现post方式上传图片文件功能示例
-
java使用smartupload组件实现文件上传的方法
-
php 使用html5 XHR2实现上传文件与进度显示功能示例
-
PHP使用HTML5 FileApi实现Ajax上传文件功能示例