Java文件上传下载、邮件收发实例代码

Java文件上传下载及邮件收发是Java程序开发中常用的功能,本文将为大家介绍Java文件上传下载及邮件收发的实例代码,帮助大家更好地掌握Java编程中这些常见功能的实现。

文件上传下载

上传文件

文件上传是Web应用开发中常见的功能之一。以下是一个文件上传的示例代码:

@PostMapping("/upload")
public String upload(@RequestParam("file") MultipartFile file) {
    // 检查文件是否为空
    if (file != null) {
        // 获取文件名
        String filename = file.getOriginalFilename();
        // 创建文件存储路径
        String filepath = "D:/uploads/";
        File dest = new File(filepath + filename);
        // 如果文件已存在,则删除原文件
        if (dest.exists()) {
            dest.delete();
        }
        // 保存文件
        try {
            file.transferTo(dest);
            return "上传成功!";
        } catch (IOException e) {
            e.printStackTrace();
            return "上传失败!";
        }
    } else {
        return "请选择要上传的文件!";
    }
}

以上代码中,@PostMapping("/upload")注解表示上传文件的请求路径为“/upload”。@RequestParam("file") MultipartFile file注解表示上传的文件是一个MultipartFile类型的文件对象。代码中,首先检查上传的文件是否为空,接着获取文件名并设置文件存储路径。如果文件已存在,则删除原文件。最后,调用MultipartFile对象的transferTo()方法将文件保存到指定路径。

下载文件

文件下载是Web应用开发中常见的功能之一。以下是一个文件下载的示例代码:

@GetMapping("/download")
public void download(HttpServletResponse response) {
    // 设置文件名
    String filename = "example.txt";
    // 设置文件路径
    String filepath = "D:/downloads/";
    File file = new File(filepath + filename);
    // 如果文件存在,则进行下载
    if (file.exists()) {
        // 设置response的Header
        response.addHeader("Content-Disposition", "attachment;filename=" + filename);
        response.setContentType("application/octet-stream");
        response.setContentLength((int) file.length());
        // 读取要下载的文件,发送给客户端
        try {
            FileInputStream in = new FileInputStream(file);
            OutputStream out = response.getOutputStream();
            byte[] buffer = new byte[1024];
            int len = 0;
            while ((len = in.read(buffer)) > 0) {
                out.write(buffer, 0, len);
            }
            in.close();
            out.flush();
            out.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    } else {
        System.out.println("要下载的文件不存在!");
    }
}

以上代码中,@GetMapping("/download")注解表示下载文件的请求路径为“/download”。代码中,首先设置文件名和文件存储路径。然后判断文件是否存在,如果存在,则设置response的Header信息,并读取文件内容发送给客户端。

邮件收发

发送邮件

下面是一个发送邮件的示例代码:

public class MailSender {
    private JavaMailSender mailSender;

    public void setMailSender(JavaMailSender mailSender) {
        this.mailSender = mailSender;
    }

    public void sendMail(String to, String subject, String content) {
        SimpleMailMessage message = new SimpleMailMessage();
        // 发件人
        message.setFrom("example@example.com");
        // 收件人
        message.setTo(to);
        // 邮件主题
        message.setSubject(subject);
        // 邮件内容
        message.setText(content);
        // 发送邮件
        mailSender.send(message);
        System.out.println("邮件发送成功!");
    }
}

以上代码中,需要注入JavaMailSender对象并设置发件人、收件人、邮件主题和邮件内容。调用mailSender.send(message)方法发送邮件。

接收邮件

下面是一个接收邮件的示例代码:

public class MailReceiver {
    private JavaMailSender mailSender;

    public void setMailSender(JavaMailSender mailSender) {
        this.mailSender = mailSender;
    }

    public void receiveMail() throws MessagingException, IOException {
        // 设置收件人邮箱地址
        String username = "example@example.com";
        // 创建Session
        Session session = Session.getDefaultInstance(new Properties());
        // 创建Store对象,并连接到对应的邮箱服务器
        Store store = session.getStore("pop3");
        store.connect("pop3.example.com", 110, username, "password");
        // 打开收件箱
        Folder folder = store.getFolder("INBOX");
        folder.open(Folder.READ_ONLY);
        // 获取邮件列表
        Message[] messages = folder.getMessages();
        // 遍历邮件,并打印邮件信息
        for (int i = 0; i < messages.length; i++) {
            Message message = messages[i];
            Address[] froms = message.getFrom();
            String subject = message.getSubject();
            System.out.println("邮件发送人:" + froms[0]);
            System.out.println("邮件主题:" + subject);
            System.out.println("邮件内容:" + message.getContent().toString());
        }
        folder.close(false);
        store.close();
    }
}

以上代码中,需要注入JavaMailSender对象并设置收件人邮箱地址。调用session.getStore()方法创建Store对象,并连接到对应的邮箱服务器。接着打开收件箱,并获取邮件列表。遍历邮件,并打印邮件信息。

通过以上的示例代码,相信大家已经了解Java文件上传下载及邮件收发的基本实现方法了。在开发实际项目过程中,可以根据需求进行相应的修改和扩展。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java文件上传下载、邮件收发实例代码 - Python技术站

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

相关文章

  • SpringBoot参数校验的最佳实战教程

    下面我将为您讲解“SpringBoot参数校验的最佳实战教程”的完整攻略。 1. 什么是参数校验 在实际开发中,我们需要对从前端或其他业务处理层传递进来的参数进行验证。参数校验是为了确保参数的类型、长度、范围、格式等是否符合项目需求的一项重要功能。参数校验可以避免因为参数错误引起的系统异常和数据错误,保证系统的安全性和合法性。 2. 参数校验的实现方式 Sp…

    Java 2023年5月20日
    00
  • java基本教程之join方法详解 java多线程教程

    Java中的join()方法是多线程编程常用的一个方法,它的作用是让调用该方法的线程等待被调用线程执行完毕后再继续执行。本文将详细讲解join()方法的使用和注意事项。 什么是join()方法 在介绍join()方法之前,我们先回忆一下多线程的基础。在Java中,当创建一个线程对象并调用start()方法后,线程对象就会进入就绪状态,等待CPU分配时间片段并…

    Java 2023年5月18日
    00
  • 基于SpringBoot核心原理(自动配置、事件驱动、Condition)

    我将详细讲解基于SpringBoot核心原理的完整攻略,包括自动配置、事件驱动和Condition。 自动配置 SpringBoot通过自动配置(autocconfiguration)的方式,大大减轻了开发人员的工作负担。自动配置就是在应用运行时,根据类路径下的jar包、类的反射信息、注解等信息,自动配置应用所需要的组件和参数,而不需要显示的在代码中进行配置…

    Java 2023年5月15日
    00
  • Java SPI机制原理及代码实例

    Java SPI机制原理及代码实例 SPI全称Service Provider Interface。在Java中,SPI是一种以插件化的方式来实现程序的可扩展性的机制,它允许第三方程序向已有的程序添加功能或者替换原有的功能。 SPI的机制原理 SPI机制的基本原理是,一些具有相同接口的服务类,定义了一组标准与规范,由服务提供者实现,以供调用方调用。调用者通过…

    Java 2023年5月19日
    00
  • Sprigmvc项目转为springboot的方法

    下面是关于“SpringMVC项目转为Spring Boot的方法”的完整攻略,包含两个示例说明。 SpringMVC项目转为Spring Boot的方法 Spring Boot是一个基于Spring框架的快速开发Web应用程序的工具,可以帮助我们快速构建和部署Web应用程序。本文将介绍如何将SpringMVC项目转为Spring Boot。 添加依赖 首先…

    Java 2023年5月17日
    00
  • 详解SpringBoot中的参数校验(项目实战)

    详解SpringBoot中的参数校验(项目实战) 在Spring Boot中,参数校验是一个非常重要的功能,它可以帮助我们在接口层面对请求参数进行校验,避免了一些不必要的错误和异常。本文将详细讲解Spring Boot中的参数校验功能,包括以下内容: 参数校验的基本概念 Spring Boot中的参数校验实现方法 示例一:使用注解方式进行参数校验 示例二:使…

    Java 2023年5月15日
    00
  • Java JDK动态代理(AOP)用法及实现原理详解

    Java JDK动态代理(AOP)用法及实现原理详解 1. 什么是动态代理(AOP)? 动态代理是一种代理设计模式中的一种实现方式。一般的代理模式需要我们手动编写代理对象来实现代理,但是动态代理允许我们在运行时动态的创建代理对象,这样就无需手动编写代理对象了。常常使用动态代理实现切面编程(AOP)。 2. Java JDK动态代理实现原理 动态代理是基于Ja…

    Java 2023年5月18日
    00
  • Java Apache Commons报错“ValidatorException”的原因与解决方法

    “ValidatorException”是Java的Apache Commons类库中的一个异常,通常由以下原因之一引起: 验证错误:如果验证失败,则可能会出现此异常。例如,可能会尝试验证无效的输入。 配置错误:如果配置文件中存在错误,则可能会出现此异常。例如,可能会使用错误的文件路径或文件名。 以下是两个实例: 例1 如果验证失败,则可以尝试使用有效的输入…

    Java 2023年5月5日
    00
合作推广
合作推广
分享本页
返回顶部