java文件上传和下载源码

废话不多说直接上代码!

这是上传文件的代码

package com.bjpowernode;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.IOException;
import java.util.UUID;
// 映射路径
@WebServlet("/upload")
@MultipartConfig
public class Upload extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        Part image = req.getPart("image");
        // 获取文件名称
        String submittedFileName = image.getSubmittedFileName();
        // 获取文件类型
        String contentType = image.getContentType();
        // 获取文件大小
        long size = image.getSize();
        // 截取文件的后缀名
        String substring = submittedFileName.substring(submittedFileName.lastIndexOf("."));
        // 新的文件名
        String newName = UUID.randomUUID() + substring;
        System.out.println(newName);
        // 判断文件类型
        if (!contentType.endsWith("png")){
           return;

        }
        // 判断文件大小是否符合要求
        if (size > 10485760){
            return;
        }
        image.write("F:\\java\\javaweb\\file_uploading\\web\\upload\\"+newName);



    }
}

这是前端代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>上传</title>
</head>
<body>
    <form action="/upload" method="post" enctype="multipart/form-data">
        请选择文件<input type="file" name="image">
        <br>
        <button type="submit">提交</button>
    </form>
</body>
</html>

这是下载的后台代码

package com.bjpowernode;

import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URLEncoder;

@WebServlet("/download")
public class DownloadServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        // 获取下载的文件名字
        String fileName = req.getParameter("fileName");
        // 设置点击下载的时候文件不被打开
        resp.setContentType("application/x-download");


        //  通过header 修改 下载的文件的名称  如果不设置 header 它会使用默认名称 来作为下载文件的名称 (download)
        // URLEncoder.encode(fileName,"utf-8") 把编码记性设置 , 必须要在 设置头信息的 同时 去修改编码
        resp.setHeader("Content-Disposition","attachment;filename="+ URLEncoder.encode(fileName,"utf-8") );
        //  根据文件的路径 ,准备文件输入流
        FileInputStream fileInputStream = new FileInputStream(new File("F:\\java\\javaweb\\file_uploading\\web\\imgae\\" + fileName));
        // 准备下载的路径 浏览器默认的下载路径
        ServletOutputStream outputStream = resp.getOutputStream();
        // 循环取出流中的数据
        int len = 0;
        byte[] buffer = new byte[2048];
        while ((len = fileInputStream.read(buffer)) != -1) {
            outputStream.write(buffer, 0, len);
            outputStream.flush();
        }
        outputStream.close();
        fileInputStream.close();
    }
}

这是下载的前端代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>下载</title>
</head>
<body>
    <a href="/download?fileName=h1.png">截图</a>
</body>
</html>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值