java 上传 下载文件工具类

简介: java 上传 下载文件工具类

package com.fh.util;

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;

/**

  • 说明:上传文件
  • 作者:FH Admin
  • 官网:fhadmin.cn

*/
public class FileUpload {

/**上传文件
 * @param file             //文件对象
 * @param filePath        //上传路径
 * @param fileName        //文件名
 * @return  文件名
 */
public static String fileUp(MultipartFile file, String filePath, String fileName){
    String extName = ""; // 扩展名格式:
    try {
        if (file.getOriginalFilename().lastIndexOf(".") >= 0){
            extName = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf("."));
        }
        copyFile(file.getInputStream(), filePath, fileName+extName).replaceAll("-", "");
    } catch (IOException e) {
        System.out.println(e);
    }
    return fileName+extName;
}

/**
 * 写文件到当前目录的upload目录中
 * @param in
 * @param fileName
 * @throws IOException
 */
public static String copyFile(InputStream in, String dir, String realName)
        throws IOException {
    File file = mkdirsmy(dir,realName);
    FileUtils.copyInputStreamToFile(in, file);
    in.close();
    return realName;
}


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


/**下载网络图片上传到服务器上
 * @param httpUrl 图片网络地址
 * @param filePath    图片保存路径
 * @param myFileName  图片文件名(null时用网络图片原名)
 * @return    返回图片名称
 */
public static String getHtmlPicture(String httpUrl, String filePath , String myFileName) {
    
    URL url;                        //定义URL对象url
    BufferedInputStream in;            //定义输入字节缓冲流对象in
    FileOutputStream file;            //定义文件输出流对象file
    try {
        String fileName = null == myFileName?httpUrl.substring(httpUrl.lastIndexOf("/")).replace("/", ""):myFileName; //图片文件名(null时用网络图片原名)
        url = new URL(httpUrl);        //初始化url对象
        in = new BufferedInputStream(url.openStream());                                    //初始化in对象,也就是获得url字节流
        //file = new FileOutputStream(new File(filePath +"\\"+ fileName));
        file = new FileOutputStream(mkdirsmy(filePath,fileName));
        int t;
        while ((t = in.read()) != -1) {
            file.write(t);
        }
        file.close();
        in.close();
        return fileName;
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return null;
    
}

}

package com.fh.util;

import java.io.BufferedOutputStream;
import java.io.OutputStream;
import java.net.URLEncoder;

import javax.servlet.http.HttpServletResponse;

/**

  • 说明:下载文件
  • 作者:FH Admin
  • 官网:fhadmin.cn

*/
public class FileDownload {

/**
 * @param response 
 * @param filePath        //文件完整路径(包括文件名和扩展名)
 * @param fileName        //下载后看到的文件名
 * @return  文件名
 */
public static void fileDownload(final HttpServletResponse response, String filePath, String fileName) throws Exception{  
    byte[] data = FileUtil.toByteArray2(filePath);  
    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();
} 

}

目录
相关文章
|
3月前
|
存储 Java 编译器
深入理解Java虚拟机--类文件结构
本内容介绍了Java虚拟机与Class文件的关系及其内部结构。Class文件是一种与语言无关的二进制格式,包含JVM指令集、符号表等信息。无论使用何种语言,只要能生成符合规范的Class文件,即可在JVM上运行。文章详细解析了Class文件的组成,包括魔数、版本号、常量池、访问标志、类索引、字段表、方法表和属性表等,并说明其在Java编译与运行过程中的作用。
|
3月前
|
存储 人工智能 Java
java之通过Http下载文件
本文介绍了使用Java实现通过文件链接下载文件到本地的方法,主要涉及URL、HttpURLConnection及输入输出流的操作。
191 0
|
3月前
|
监控 Java API
Java语言按文件创建日期排序及获取最新文件的技术
这段代码实现了文件创建时间的读取、文件列表的获取与排序以及获取最新文件的需求。它具备良好的效率和可读性,对于绝大多数处理文件属性相关的需求来说足够健壮。在实际应用中,根据具体情况,可能还需要进一步处理如访问权限不足、文件系统不支持某些属性等边界情况。
204 14
|
4月前
|
存储 Java 数据安全/隐私保护
Java技术栈揭秘:Base64加密和解密文件的实战案例
以上就是我们今天关于Java实现Base64编码和解码的实战案例介绍。希望能对你有所帮助。还有更多知识等待你去探索和学习,让我们一同努力,继续前行!
333 5
|
4月前
|
网络协议 安全 Java
实现Java语言的文件断点续传功能的技术方案。
像这样,我们就完成了一项看似高科技、实则亲民的小工程。这样的技术实现不仅具备实用性,也能在面对网络不稳定的挑战时,稳稳地、不失乐趣地完成工作。
253 0
|
4月前
|
存储 安全 算法
Java 集合面试题 PDF 下载及高频考点解析
本文围绕Java集合面试题展开,详细解析了集合框架的基本概念、常见集合类的特点与应用场景。内容涵盖`ArrayList`与`LinkedList`的区别、`HashSet`与`TreeSet`的对比、`HashMap`与`ConcurrentHashMap`的线程安全性分析等。通过技术方案与应用实例,帮助读者深入理解集合类的特性和使用场景,提升解决实际开发问题的能力。文末附带资源链接,供进一步学习参考。
100 4
|
7月前
|
人工智能 JSON Java
列表结构与树结构转换分析与工具类封装(java版)
本文介绍了将线性列表转换为树形结构的实现方法及工具类封装。核心思路是先获取所有根节点,将其余节点作为子节点,通过递归构建每个根节点的子节点。关键在于节点需包含 `id`、`parentId` 和 `children` 三个属性。文中提供了两种封装方式:一是基于基类 `BaseTree` 的通用工具类,二是使用函数式接口实现更灵活的方式。推荐使用后者,因其避免了继承限制,更具扩展性。代码示例中使用了 Jackson 库进行 JSON 格式化输出,便于结果展示。最后总结指出,理解原理是进一步优化和封装的基础。
205 0
|
7月前
|
前端开发 Cloud Native Java
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
Java||Springboot读取本地目录的文件和文件结构,读取服务器文档目录数据供前端渲染的API实现
|
8月前
|
Java API 数据处理
深潜数据海洋:Java文件读写全面解析与实战指南
通过本文的详细解析与实战示例,您可以系统地掌握Java中各种文件读写操作,从基本的读写到高效的NIO操作,再到文件复制、移动和删除。希望这些内容能够帮助您在实际项目中处理文件数据,提高开发效率和代码质量。
185 4
|
8月前
|
Linux 网络安全 Docker
尼恩一键开发环境: vagrant+java+springcloud+redis+zookeeper镜像下载(&制作详解)
尼恩提供了一系列文章,旨在帮助开发者轻松搭建一键开发环境,涵盖Java分布式、高并发场景下的多种技术组件安装与配置。内容包括但不限于Windows和CentOS虚拟机的安装与排坑指南、MySQL、Kafka、Redis、Zookeeper等关键组件在Linux环境下的部署教程,并附带详细的视频指导。此外,还特别介绍了Vagrant这一虚拟环境部署工具,
尼恩一键开发环境: vagrant+java+springcloud+redis+zookeeper镜像下载(&制作详解)