文件上传
程序员文章站
2022-03-26 17:42:29
1.导入jar包2.写好上传表单表单必须要有 enctype属性 提交方式必须是post在这里插入代码片import com.jspsmart.upload.File;import com.jspsmart.upload.SmartUpload;import com.jspsmart.upload.SmartUploadException;import javax.servlet.ServletException;import javax.servlet.annotation.WebSe...
1.导入jar包
2.写好上传表单
表单必须要有 enctype属性 提交方式必须是post
在这里插入代码片
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;
@WebServlet(value = "/update")
public class fileUP extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
// 创建对象
SmartUpload su = new SmartUpload();
//初始化
PageContext pageContext = JspFactory.getDefaultFactory().getPageContext(this, req, resp, null, false, 1024 * 5, true);
su.initialize(pageContext);
//设置编码方式
su.setCharset("utf-8");
//上传文件
try {
su.upload();
} catch (SmartUploadException e) {
e.printStackTrace();
}
//得到文件
File file = su.getFiles().getFile(0);
//取得文件名
String fieldName = file.getFieldName();
//指定路径
String url = "updatefile/" + fieldName;
//保存文件
try {
file.saveAs(url,File.SAVEAS_VIRTUAL);
} catch (SmartUploadException e) {
e.printStackTrace();
}
//是否保存成功
req.setAttribute("filename",fieldName);
//如何得到除了文件以外的数据
String uname = su.getRequest().getParameter("uname");
System.out.println("uname"+uname);
//跳转页面
req.getRequestDispatcher("/success.jsp").forward(req,resp);
}
}
关于JspFactory.getDefaultFactory().getPageContext()中的属性内容:
属性 | 含义 |
---|---|
servlet | 请求的servlet |
request | serblet上挂起的当前请求 |
response | serblet上挂起的当前响应 |
errorPageURL | 请求JSP的错误页面的地址 |
needsSSession | 是否需要session |
buffer | 缓冲区大小 单位为byte |
autoflush | 缓冲区应该在缓冲区自动刷新到输出流(true)还是抛出IOException(false) |
其中 由于存了属性值 不能使用重定向
本文地址:https://blog.csdn.net/weixin_50688121/article/details/109632436
上一篇: 通过指针引用字符串
下一篇: 网络最大流算法—EK算法