Java文件上传下载

该博客介绍了Java文件上传下载相关内容,转载自https://www.cnblogs.com/creaky/p/10801289.html ,聚焦于Java在文件处理方面的应用。

Java文件上传下载

/**
 * 上传文件
 */
public String uploadFile() throws IOException, Exception {
    
    if (getRequestContext().haveUploadFile()) {

        String channelId = getRequest().getParameter("channelId");
        JfileItem fileItem = getRequestContext().getUploadFiles().get(0);

        // 文件名
        String fileName = fileItem.getName();
        DateFormat df = new SimpleDateFormat("yyyyMMddHHmmssSSS");
        String uploadFileName = df.format(new Date()) + fileName;

        // 文件类型
        int n = fileName.lastIndexOf(".");
        String type = fileName.substring(n + 1);

        // 上传路径
        String path = getRequest().getServletContext().getRealPath("") + "\\uploadfiles\\";

        //获取输出流
        OutputStream os = new FileOutputStream(path + uploadFileName);
        
        // 获得输入流
        InputStream is = fileItem.getInputStream();
        
        // 写入
        byte[] buffer = new byte[512];
        int temp;
        while ((temp = is.read(buffer)) != (-1)) {
            os.write(buffer, 0, temp);
        }
        os.flush();
        os.close();
        is.close();

        // 将文件信息写入数据库
        FileUpload fileUpload = new FileUpload();
        fileUpload.setFileName(fileName);
        fileUpload.setFileLocation(uploadFileName);
        fileUpload.setFileChannelId(channelId);
        fileUploadService.save(fileUpload);
    }
    return getOutJson().toString();
}

/**
 * 下载文件
 */
public String downloadFile() throws Exception {

    String id = getRequest().getParameter("id");
    FileUpload fileUpload = fileUploadService.getById(id);

    // 根路径
    String path = getRequest().getServletContext().getRealPath("") + "\\uploadfiles\\";

    // 下载文件的路径
    String filePath = path + fileUpload.getFileLocation();

    // 文件名
    String fileName = fileUpload.getFileName();
    fileName = URLEncoder.encode(fileName, "UTF-8");

    HttpServletResponse response = getResponse();

    // 设置文件ContentType类型,自动判断下载文件类型
    response.setContentType("multipart/form-data");
    // 设置编码
    response.setCharacterEncoding("utf-8");
    // 设置文件头,最后一个参数是设置下载文件名
    response.setHeader("Content-Disposition", "attachment;fileName=" + fileName);

    // 通过文件路径获得File对象
    File file = new File(filePath);

    FileInputStream is = new FileInputStream(file);

    // 通过response获取OutputStream对象
    OutputStream os = response.getOutputStream();

    // 写入
    byte[] buffer = new byte[512];
    int i;
    while ((i = is.read(buffer)) != -1) {
        os.write(buffer, 0, i);
    }
    os.flush();
    os.close();
    is.close();

    return getOutJson().toString();
}

转载于:https://www.cnblogs.com/creaky/p/10801289.html

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值