使用jsp,servlet,smartUpload完成上传文件
如何使用smartUpload完成文件上传操作?
描述:
表单提交设置格式(文件上传固定配置):
<form action="SmartUploadSvt" enctype="multipart/form-data" method="post">
servlet中,我们使用smartUpload完成上传,限制上传文件格式大小等,并且不符合上传标准不能上传,弹出提示框。
注意:
smartUpload.upoad()表示上传准备工作
smartUpload.save(" ")或者su.getFiles().getFile(0).saveAs()才是上传到指定目录
完整代码:
jsp:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>SmartUpload</title>
</head>
<body>
<form action="SmartUploadSvt" enctype="multipart/form-data" method="post">
请选择文件:<input type="file" name="myfile"/><br><br>
<input type="submit" value="上传"/>
</form>
</body>
</html>
servlet:
package svt;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.UUID;
import javax.servlet.ServletException;
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 com.jspsmart.upload.SmartUpload;
import com.jspsmart.upload.SmartUploadException;
public class SmartUploadSvt extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html; charset=UTF-8");
SmartUpload su = new SmartUpload();/* 创建SmartUpload对象 */
PageContext pageContext = JspFactory
.getDefaultFactory()
.getPageContext(this, request, response, null, true, 8019, true);
su.initialize(pageContext);/* 初始化SmartUpload对象 */
su.setCharset("utf-8");/* 设定上传字符集 */
su.setAllowedFilesList("txt,jpg,png");/*限制文件格式类型*/
su.setMaxFileSize(3 * 1024 * 1024);/* 限制上传文件大小3m */
boolean flag = false;/*初始化上传审核不通过为false*/
try {
su.upload();/* 上传准备 */
flag = true;/* 准备完成,标记flag */
}catch(Exception e){
}
/* 判定flag,如果为true则上传准备完成,否则不符合上传规则 */
if (flag) {
String uuid = UUID.randomUUID().toString().replace("-", "");/*创建唯一识别uuid*/
String ext=su.getFiles().getFile(0).getFileExt();/*获取文件后缀*/
String fileName=uuid+"."+ext;/*重命名文件名(uuid+后缀)*/
try {
su.getFiles().getFile(0).saveAs("\\smartUploadFile\\"+fileName);/* 上传到指定路径 */
} catch (SmartUploadException e) {
e.printStackTrace();
}
request.setAttribute("fileName", fileName);
request.getRequestDispatcher("suOK.jsp").forward(request, response);
} else {
PrintWriter out = response.getWriter();/* 获取out输出内置对象 */
out.println("<script type='text/javascript'>alert('上传文件类型或大小不合要求,请重新尝试!');location='smartUpload.jsp';</script>");
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
上传成功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>smartUpload上传文件成功</title>
</head>
<body>
已上传文件:<a href="smartUploadFile/${fileName }">${fileName }</a>
</body>
</html>
补充:
使用smartUpload获取不到表单信息内容怎么办?
解决方案:
在smartUpload.upoad()下面添加以下代码,smartUpload封装了request,必须通过调用指定方法才能使用request
....
smartUpload.upoad();
String messagae = SmartUpload.getRequest().getParameter("ms");
System.out.println("描述:"+messagae);