上传文件流程

本文详细介绍了Java中实现文件上传的五个步骤,包括设置乱码处理、获取请求数据、确定文件上传路径、执行文件上传操作以及向客户端发送上传成功的响应。同时提供了一个UploadUtils.java的工具类用于辅助文件上传。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.设置乱码

request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");

2.获取请求的数

String  username=request.getParameter("username");
Part part= request.getPart("file1");

3.获取文件上传路径 (真实路径)

String uploadPath= request.getServletContext().getRealPath("/WEB-INF/upload");
        File file=new File(uploadPath);
        if (!file.exists()){
            file.mkdirs();//新建文件夹
        }

4.文件上传

 //生成唯一文件名
        String oldName= part.getSubmittedFileName();
        List<String> nameList=new ArrayList<>();
        nameList.add(".jpg");
        nameList.add(".doc");
        nameList.add(".exe");
        nameList.add(".jar");

        String extName=oldName.substring(oldName.lastIndexOf("."));
        if (!nameList.contains(extName)){
            response.getWriter().println(oldName+"不符合文件上传规则");
            return;
        }

        String newName= UploadUtils.newFileName(oldName);
        //生成二级三级目录 实现散列存储

        String newPath= UploadUtils.newFilePath(uploadPath,oldName);
        part.write(newPath+"\\"+newName);

5.响应客户端上传成功

 response.getWriter().println(part.getSubmittedFileName()+"上传成功");

工具类
UploadUtils.java

public static String newFileName(String filename){
       return UUID.randomUUID().toString().replaceAll("-","")+"_"+filename;
   }
   //生成二级三级目录
public static String newFilePath(String basepath,String filename){
       int hashCode=filename.hashCode();
       int path1=hashCode & 15;//二级目录 与运算 0-15
       int path2=(hashCode>>4)&15;//三级目录  0-15
       String newPath=basepath+"\\"+path1+"\\"+path2;
       File file=new File(newPath);
       if (!file.exists()){
           file.mkdirs();
       }
       return newPath;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值