java实现上传文件到服务器和客户端

下面是详细讲解 Java 实现上传文件到服务器和客户端的完整攻略:

一、上传文件到服务器

1、准备工作

用 Java 上传文件到服务器,需要用到 commons-fileuploadcommons-io 两个 Jar 包。这两个 Jar 包可以在 Maven 仓库中进行下载,下载方式详见如下链接:

  • commons-fileupload:https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload
  • commons-io:https://mvnrepository.com/artifact/commons-io/commons-io

2、前端页面

前端页面需要创建一个表单来上传文件,代码如下:

<form action="/upload" method="post" enctype="multipart/form-data">
   <input type="file" name="file"/>
   <input type="submit" value="上传"/>
</form>

3、后端代码

后端需要实现一个上传文件的接口,将前端传过来的文件保存到服务器上。示例代码如下:

@PostMapping("/upload")
@ResponseBody
public String upload(@RequestParam("file") MultipartFile file) {
    if (file.isEmpty()) {
        return "上传文件不能为空";
    }

    // 获取上传文件名称
    String fileName = file.getOriginalFilename();

    // 设置上传文件保存的路径
    String filePath = "D:/upload/";

    // 检查保存路径是否存在,不存在则创建
    File saveFile = new File(filePath);
    if (!saveFile.exists()) {
        saveFile.mkdirs();
    }

    try {
        // 保存上传的文件到目标路径
        file.transferTo(new File(filePath + fileName));
    } catch (IOException e) {
        e.printStackTrace();
        return "上传失败,请稍后重试";
    }

    return "上传成功";
}

二、下载文件到客户端

1、前端页面

前端页面提供一个下载按钮,用于触发文件下载的操作。示例代码如下:

<a href="/download?fileName=test.txt">下载文件</a>

2、后端代码

后端需要处理文件下载的请求,将需要下载的文件以二进制流的形式传输到客户端。示例代码如下:

@GetMapping("/download")
public void download(HttpServletResponse response, @RequestParam("fileName") String fileName) {
    // 获取要下载的文件路径
    String filePath = "D:/upload/";

    File file = new File(filePath + fileName);

    if (file.exists()) {
        try {
            // 读取要下载的文件,保存到字节数组中
            byte[] data = FileUtils.readFileToByteArray(file);

            // 设置响应头信息
            response.setContentType("application/octet-stream");
            response.setHeader("Content-disposition", "attachment;filename=" + fileName);

            // 写入响应流中
            ServletOutputStream outputStream = response.getOutputStream();
            outputStream.write(data);
            outputStream.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

以上就是 Java 实现上传文件到服务器和客户端的完整攻略,希望对你有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现上传文件到服务器和客户端 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • 添加学生信息(Javaweb)

    添加学生信息(Javaweb)的完整攻略 本文将为您详细讲解如何在Javaweb中添加学生信息,包括前端页面设计、后端代码实现、数据库操作等内容。 前端页面设计 在Javaweb中,可以使用JSP和Servlet等技术来实现前端页面设计。以下是添加学生信息的前端页面设计示例: <!DOCTYPE html> <html> <he…

    other 2023年5月6日
    00
  • 【sping揭秘】22、事务管理

    【spring揭秘】22、事务管理 在现代企业应用程序中,事务管理是非常重要的一部分。Spring框架为我们提供了强大的事务管理功能,可以很容易地控制事务的开启、提交、回滚等。 事务管理概述 事务是指将一组相关操作作为一个不可分割的操作单元进行执行,要么全部执行成功,要么全部执行失败回滚。在企业应用程序中,事务管理是非常重要的一部分。一般使用关系型数据库进行…

    其他 2023年3月28日
    00
  • Shell脚本读取ini配置文件的实现代码2例

    首先,需要明确什么是INI配置文件。INI配置文件是一种常见的配置文件格式,它可以用于存储一些应用程序的配置变量或参数。INI文件中的内容通常通过键值对的形式来表示,具体格式如下: [section1] key1=value1 key2=value2 [section2] key3=value3 key4=value4 其中,方括号内的为section名称,…

    other 2023年6月25日
    00
  • java实现querywrapper分页查询

    在Java中,QueryWrapper是MyBatis-Plus中的一个查询构造器,用于构建SQL查询语句。QueryWrapper提供了一种简单而强大的来构建复杂的查询条件。本文将详细介绍如何使用QueryWrapper实现分页查询,包括语法、参数、示例。 语法 public <T> IPage<T> page(IPage<T…

    other 2023年5月7日
    00
  • python的注释规范

    以下是“Python的注释规范完整攻略”的标准markdown格式文本,其中包含两个示例: Python的注释规范完整攻略 Python是一种易于学习和使用的编程语言,注释是Python编程中非常重要的一部分。好的注释可以提高代码的可读性和可维护性。以下是Python的注释规范的完整攻略。 1. 单行注释 单行注释是指在一行代码后面添加注释。以下是单行注释的…

    other 2023年5月10日
    00
  • Springboot使用Junit测试没有插入数据的原因

    Spring Boot使用JUnit测试没有插入数据的原因 在使用Spring Boot进行单元测试时,有时候会遇到测试方法执行成功,但是数据库中没有插入数据的情况。这可能是由于以下原因导致的: 1. 事务回滚机制 Spring Boot的默认配置是在测试方法执行完毕后自动回滚事务,这样可以保证测试方法对数据库的操作不会对实际数据产生影响。但是这也意味着在测…

    other 2023年10月13日
    00
  • 浅谈一下Java多线程断点复制

    浅谈一下Java多线程断点复制 Java中多线程断点复制是一种并发编程技术,可以将数据从一个线程复制到另一个线程。在编写多线程程序时,经常需要在多个线程之间共享数据,而多线程断点复制正是解决数据共享问题的一种方式。本文将详细介绍Java多线程断点复制的实现。 多线程断点复制的实现原理 多线程断点复制的原理基于Java的内存模型。我们知道,在Java程序中,所…

    other 2023年6月27日
    00
  • Git 常用命令整理

    Git 常用命令整理 1. Git 工作流程 Git 是一款分布式版本控制系统,采用的是以提交为基础的工作流程。当我们在项目中添加、修改和删除文件时,我们会将这些修改提交到本地 Git 仓库中。随后,通过 push 操作,将本地提交推送到远程 Git 仓库中。 2. Git 常用命令 2.1. 创建本地仓库 在本地创建一个新的 Git 仓库 $ git in…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部