欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

文件上传

程序员文章站 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