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日

相关文章

  • Spring 代码技巧梳理总结让你爱不释手

    Spring 代码技巧梳理总结让你爱不释手攻略 介绍 Spring是一款开源的,轻量级的Java开发框架。它包含了一系列的工具,使得Java开发更加容易和高效。在本攻略中,我们会总结出一些Spring开发中的常用技巧,以帮助你更加熟悉和熟练地使用Spring。 技巧列表 使用@Autowired简化依赖注入 在Spring中,我们可以使用@Autowired…

    Java 2023年5月19日
    00
  • java中接口(interface)及使用方法示例

    下面详细讲解“Java中接口(interface)及使用方法示例”的完整攻略。 一、接口的概念 在 Java 中,接口就是一个抽象类型,它只包含抽象方法的定义。接口定义了一组方法,但没有给出方法的实现。其主要作用是描述类应该具有的功能,而不具体地提供实现。 接口定义的格式如下: public interface 接口名称 { // 抽象方法的定义 } 接口内…

    Java 2023年5月26日
    00
  • 跨站脚本攻击XSS原理与防范实例分析

    跨站脚本攻击XSS原理与防范实例分析 XSS攻击原理 跨站脚本攻击(XSS)是通过在web应用程序中注入恶意脚本来攻击用户的一种常见安全漏洞。攻击者可将攻击代码注入到正常的web页面中,一旦被用户浏览器执行,就能够窃取用户的敏感信息或者利用用户的身份进行恶意操作。 XSS攻击通常分为以下三种类型: 存储型攻击:攻击者将恶意脚本注入到web应用程序中的数据库中…

    Java 2023年6月16日
    00
  • Java8 Stream API 详细使用方法与操作技巧指南

    Java8 Stream API 详细使用方法与操作技巧指南 什么是Java8 Stream API Java8 Stream是用于处理集合数据的新操作API,提供了一种更加便捷的、并行化的数据处理方式。它可以优雅地处理数据集合中的数据,也可以高效地并行处理大量的数据。 Stream 本身是不存储数据的,其操作也不会改变源数据,相反,Stream 的每一个操…

    Java 2023年5月26日
    00
  • java生成图片验证码功能

    下面是详细讲解”Java生成图片验证码功能”的完整攻略: 1. 确定需求 首先,我们需要明确这个功能的需求,即在Java Web应用中生成一个随机的图片验证码,以用于用户填写和校验,防止机器人攻击或恶意提交。 2. 添加依赖 接下来,我们需要添加相关的依赖。Java中生成图片验证码需要用到jcaptcha这个开源工具包,我们可以在pom.xml中添加它的依赖…

    Java 2023年6月15日
    00
  • LZW压缩算法 C#源码

    LZW压缩算法是一种流行的无损压缩算法,用于压缩数据文件。以下是使用C#实现LZW压缩算法的完整攻略: 实现步骤 读取需要压缩的文件 byte[] input = File.ReadAllBytes(inputFilePath); 初始化字符表的大小,并创建哈希表用于记录字符和其对应的编码 int tableSize = 256; Dictionary&lt…

    Java 2023年5月19日
    00
  • sprng和struts有什么区别?

    sprng和struts有什么区别? 背景介绍 sprng(简称Spring)和struts是两个常见的Java Web框架,都是基于MVC设计模式。它们都能帮助开发人员加快Web应用程序开发的速度。 区别 1. 关注点不同 Spring框架的主要关注点在于IoC(Inverse of Control,控制反转)和AOP(Aspect-Oriented Pr…

    Java 2023年5月20日
    00
  • 详谈hibernate,jpa与spring data jpa三者之间的关系

    详谈hibernate,jpa与spring data jpa三者之间的关系 什么是Hibernate? Hibernate是一个开源的ORM(Object Relational Mapping)框架,旨在通过映射Java对象和数据库表,将数据持久化到数据库中。Hibernate执行了许多数据库操作并自动处理所有底层细节,使得编写数据访问层的代码变得更简单。…

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