文件的上传与下载

本文介绍了使用Java处理文件上传和下载的过程。在文件上传时,重点讲述了设置编码、获取表单元素、判断文件类型、处理文件路径、类型及覆盖问题,以及文件保存和缓存清除的步骤。在文件下载部分,提到了从服务器获取下载目录并进行下载的操作。最后,给出了页面相关的代码示例。
摘要由CSDN通过智能技术生成

文件的上传

大体思路:
①设置编码格式:request、response
②从jsp中获取元素(getParts)
③判断这个元素是普通表单元素还是文件(利用方法:part.getSubmittedFileName()为null就是普通表单元素,否则为文件)
④如果是文件则有四个注意点

  1. 文件是否为空
  2. 文件的路径问题
  3. 上传文件的类型问题
  4. 文件的覆盖问题
  5. 文件目录过多的问题

⑤保存文件(part.write(basePath + File.separator + newFilename)😉
⑥清除缓存(part .delete());

具体见下面的代码`

@WebServlet(name = "UploadServlet", urlPatterns = "/upload")
@MultipartConfig(maxFileSize = 1024*1024*5,maxRequestSize = 1024*1024*20)
public class UploadServlet extends HttpServlet {
   
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
   
        //防止乱码
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        //获取数据
        Collection<Part> parts = request.getParts();
        String basePath = request.getServletContext().getRealPath("WEB-INF" + File.separator + "upload");
        File dir = new File(basePath);
        if (!dir.exists()){
   
            dir.mkdirs();
        }
        PrintWriter out = response.getWriter();
        //允许上传的文件的集合
        List<String> list = new ArrayList<>();
        list.add("txt");
        list.add("png");
        if (!dir.exists()){
   
            dir.mkdirs();
        }
        for (Part part : parts) {
   
            String submittedFileName = part.getSubmittedFileName();
            if (submittedFileName== null){
   
                //普通表单元素
                String name = part.getName();
                String parameter = request.getParameter(name);
                System.out.println(name + "--" + parameter);
            }else{
   
                //问题5:如果没有选择文件:
                if (submittedFileName.equals("")){
   
                    continue;
                }
                //问题1:IE浏览器的问题
                //文件上传的时候会默认在头里面加一个content-disposition
                String dis = part.getHeader("content-disposition");
                dis = dis.substring(dis.indexOf("filename=") + 10<
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值