文件上传

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
requestserblet上挂起的当前请求
responseserblet上挂起的当前响应
errorPageURL请求JSP的错误页面的地址
needsSSession是否需要session
buffer缓冲区大小 单位为byte
autoflush缓冲区应该在缓冲区自动刷新到输出流(true)还是抛出IOException(false)

其中 由于存了属性值 不能使用重定向

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值