百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

100个Java工具类之6:文件的上传与下载

lipiwang 2024-10-25 15:55 7 浏览 0 评论

该系列为java工具类系列,主要展示100个常用的java工具类。

本系列工具类的核心目的主要有三点:

1,以便他用:提供可用的Java工具类,方便大家使用,避免重复造轮子

2,个人记录:作为个人记录,同时督促自己学习总结

3,为初学者提供思路,相互交流,共同进步

当然,很多细节部分经不起推敲,如存在部分代码不规范、注释不详细、格式不统一等问题,还望阅读者多多包涵,多提意见。

本文目录:

文件的上传(根据源文件路径上传)

文件的上传(根据MultipartFile上传)

文件的下载


文件的上传,本文根据上传参数的不通介绍两种上传方式,分别是根据源文件路径和MultipartFile对象进行上传。

这两种方式基本上是类似的,因为可以获取或生成文件流,并由此在文件路径下生成新文件

此代码中没有删除源文件,使用者可根据实际需求来修改代码。

一、文件的上传(根据源文件路径上传)

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.io.FileUtils;
import org.springframework.web.multipart.MultipartFile;

/**
 * @Author 程序幻境
 * @Date 2022/11/20
 * @Version 1.0
 */
public class FtpUtil {

    public static void main(String[] args) {
        uploadFile("C:\\Users\\CXHJ\\Desktop\\1.txt","C:\\Users\\CXHJ\\Desktop\\1","1.txt");
    }

    /**
     * 上传文件
     *
     * @param srcFilePath 源文件全路径(包含文件名称)
     * @param filePath  上传路径
     * @param fileName 文件名(目标文件名称,一般和源文件同名)
     */
    public static String uploadFile(String srcFilePath, String filePath, String fileName) {
        try {
            //根据源文件路径,创建文件流
            File file = new File(srcFilePath);
            InputStream in = new FileInputStream(file);
            //新建目标文件
            File desFile = mkdirFiLe(filePath, fileName);
            //源文件写入目标文件
            FileUtils.copyInputStreamToFile(in, desFile);
            //关流
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return fileName;
    }

    /**
     * 判断路径是否存在,如果不存在,创建此路径
     *
     * @param filePath      文件路径
     * @param fileName 文件名
     * @throws IOException
     */
    public static File mkdirFiLe(String filePath, String fileName) throws IOException {
        File file = new File(filePath, fileName);
        if (!file.exists()) {
            if (!file.getParentFile().exists()) {
                file.getParentFile().mkdirs();
            }
            file.createNewFile();
        }
        return file;
    }
}

二、文件的上传(根据根据MultipartFile上传)

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;

import org.apache.commons.io.FileUtils;
import org.springframework.web.multipart.MultipartFile;

/**
 * @Author 程序幻境
 * @Date 2022/11/20
 * @Version 1.0
 */
public class FtpUtil {

    public static void main(String[] args) {
        uploadFile("C:\\Users\\CXHJ\\Desktop\\1.txt","C:\\Users\\CXHJ\\Desktop\\1","1.txt");
    }

    /**
     * 上传文件
     *
     * @param file     文件对象
     * @param filePath 上传路径
     * @param fileName 文件名
     */
    public static String uploadFile(MultipartFile file, String filePath, String fileName) {
        try {
            //获取文件流
            InputStream in = file.getInputStream();
            //新建目标文件
            File desFile = mkdirFiLe(filePath, fileName);
            //源文件写入目标文件
            FileUtils.copyInputStreamToFile(in, desFile);
            //关流
            in.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return fileName;
    }

    /**
     * 判断路径是否存在,如果不存在,创建此路径
     *
     * @param filePath      文件路径
     * @param fileName 文件名
     * @throws IOException
     */
    public static File mkdirFiLe(String filePath, String fileName) throws IOException {
        File file = new File(filePath, fileName);
        if (!file.exists()) {
            if (!file.getParentFile().exists()) {
                file.getParentFile().mkdirs();
            }
            file.createNewFile();
        }
        return file;
    }
}

三、文件的下载

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
 
import org.apache.commons.io.FileUtils;
import org.springframework.web.multipart.MultipartFile;

/**
     * @param filePath 文件完整路径(包括文件名和扩展名)
     * @param fileName 下载后看到的文件名
     * @return  文件名
     */
    public static void fileDownload(final HttpServletResponse response, String filePath, String fileName) throws Exception{
        File file = new File(filePath);
        byte[] data = FileUtils.readFileToByteArray(file);
        fileName = URLEncoder.encode(fileName, "UTF-8");
        response.reset();
        response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
        response.addHeader("Content-Length", "" + data.length);
        response.setContentType("application/octet-stream;charset=UTF-8");
        OutputStream outputStream = new BufferedOutputStream(response.getOutputStream());
        outputStream.write(data);
        outputStream.flush();
        outputStream.close();
        response.flushBuffer();
    }

本文仅供个人记录,大家可以借鉴,每行代码都是自己手打,亲测可直接粘贴执行,如有任何问题可在评论区提问,欢迎大家交流。

编辑人:程序幻境

码字不易,不喜勿踩

相关推荐

前端 JavaScript 字符串中提取数字

varstr="4500元";varnum=parseInt(str);alert(num);//4500如果字符串前面有非数字字符,上面这种方法就不行了:var...

使用JavaScript如何获取网站网址(js如何获取浏览器信息)

在做网站开发时,我们有时候会获取当前页面的完整路径。在网页前端如何实现呢?请在网页脚本代码段中粘贴如下代码。functiongetRootPath(){//获取当前网址,...

java文本对比工具源码8(java比较文本相似度)

/***ParseatextualrepresentationofpatchesandreturnaListofPatch*objects.*@paramtextline...

JavaScript实现的9大排序算法(js排序方法)

笔试面试经常涉及各种算法,本文简要介绍常用的一些算法,并用JavaScript实现。1、插入排序1)算法简介插入排序(Insertion-Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通...

使用函数化的Javascript代码编写方式

对于Javascript介绍想必大家都耳熟能详啦,基于函数化的编程语言,基于浏览器运行的编程语言,web开发语言,前端开发必备语言,blablabla...Javascript是一个非常灵...

Js基础31:内置对象(js内置对象是什么意思)

js里面的对象分成三大类:内置对象ArrayDateMath宿主对象浏览器提供的对象(如bom、dom等等)自定义对象开发人员自己定义的对象内置对象——所谓内置对象,就是JavaScript自...

js获取上传文件类型以及大小的方法

前端web上传文件时,需要在上传之前判断一下文件的类型以及文件的大小,HTML为前端的标记语言是无法做到这一点,只能使用javascript动态脚本代码来实现。js获取上传文件大小的方法示例代码:&...

黑客入门实践:如何绕过前端过滤上传文件

今天开始,我们就要开始学习具体的漏洞了,但是希望大家学完后,不要轻易"入侵"网站哦,当时测试环境下除外。今天的课程是关于“文件上传漏洞”,据安界网的老师介绍,文件上传漏洞仅次于命令执行...

Java文件上传细讲(java文件夹上传)

什么是文件上传?文件上传就是把用户的信息保存起来。为什么需要文件上传?在用户注册的时候,可能需要用户提交照片。那么这张照片就应该要进行保存。免费学习资料获取方式上传组件(工具)为什么我们要使用上传工具...

鸿蒙上实现“翻译”功能(鸿蒙宴全文翻译)

本章节我们来制作中文翻译成英文的实例(运行在HarmonyOS上),通过HTTP去配合API进行实现。需求分析如下:文字输入HTTP协议使用文字翻译控件介绍①HTTP数据请求官方文档请求...

JavaScript从入门到精通(javascript 入门教程)

前几天,我们学习了JavaScript的入门课程,但是要想做网站,仅仅学会入门是不够的,今后的几天,我将带领大家精通JavaScript,希望大家好好学习!JS内置对象String对象:字符串对象,提...

第15天|16天搞定前端,javascript语法篇(干货)

JavaScript是互联网上最流行的脚本语言,这门语言可用于HTML和web,可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。它是一个脚本语言,它是一个轻量级,但功能强大的编程...

通过js来实现打字效果(js如何输入)

有时候浏览网页经常会看见一些页面出现一些打字的效果,那么是怎么实现的呢?逻辑确定目标容器,在哪个容器进行输出确定输出内容,当前直接根据目标容器确定输出内容即可需要控制输出频率,因此需要循环输出完毕代码...

手把手教你学会一键还原混淆js原理

1.短变量名在以下示例代码中,我们将变量“customerName”替换为“a”:vara="JohnSmith";console.log(a);2.随机变量名在以下示例代码...

sql中常用的字符串函数详解(sql字符串函数有哪些)

在日常开发中遇到处理最多的可能字符串要算其中一个了,什么替换啊截取啊大小写转换啊、删除空格啊等等,这些操作我们可以在前端操作,也可以直接在数据库的sql中操作,那么我们来看一下sql中处理字符串的...

取消回复欢迎 发表评论: