当前位置:首页 > Java

java 如何推送附件

2026-03-18 07:20:29Java

使用 JavaMail API 发送带附件的邮件

引入 JavaMail 依赖(Maven 项目):

<dependency>
    <groupId>com.sun.mail</groupId>
    <artifactId>javax.mail</artifactId>
    <version>1.6.2</version>
</dependency>

创建邮件并添加附件:

Properties props = new Properties();
props.put("mail.smtp.host", "smtp.example.com");
props.put("mail.smtp.port", "587");
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");

Session session = Session.getInstance(props, new Authenticator() {
    protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication("username", "password");
    }
});

try {
    Message message = new MimeMessage(session);
    message.setFrom(new InternetAddress("from@example.com"));
    message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("to@example.com"));
    message.setSubject("Email with Attachment");

    Multipart multipart = new MimeMultipart();

    // 邮件正文
    MimeBodyPart messageBodyPart = new MimeBodyPart();
    messageBodyPart.setText("This email contains an attachment");
    multipart.addBodyPart(messageBodyPart);

    // 添加附件
    MimeBodyPart attachmentPart = new MimeBodyPart();
    attachmentPart.attachFile(new File("path/to/attachment.pdf"));
    multipart.addBodyPart(attachmentPart);

    message.setContent(multipart);
    Transport.send(message);
} catch (Exception e) {
    e.printStackTrace();
}

使用 HTTP 客户端发送带附件的请求

使用 Apache HttpClient 发送 multipart/form-data 请求:

CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost uploadFile = new HttpPost("http://example.com/upload");

MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addTextBody("field1", "value1", TEXT_PLAIN);
builder.addBinaryBody("file", new File("path/to/file"), ContentType.APPLICATION_OCTET_STREAM, "filename.ext");

HttpEntity multipart = builder.build();
uploadFile.setEntity(multipart);

CloseableHttpResponse response = httpClient.execute(uploadFile);
HttpEntity responseEntity = response.getEntity();

使用 Spring Boot 上传文件

创建文件上传控制器:

@RestController
public class FileUploadController {
    @PostMapping("/upload")
    public ResponseEntity<String> handleFileUpload(@RequestParam("file") MultipartFile file) {
        try {
            byte[] bytes = file.getBytes();
            Path path = Paths.get("uploads/" + file.getOriginalFilename());
            Files.write(path, bytes);
            return ResponseEntity.ok("File uploaded successfully");
        } catch (IOException e) {
            return ResponseEntity.status(500).body("Upload failed");
        }
    }
}

使用 FTP 协议上传文件

使用 Apache Commons Net 进行 FTP 文件传输:

java 如何推送附件

FTPClient ftpClient = new FTPClient();
try {
    ftpClient.connect("ftp.example.com");
    ftpClient.login("username", "password");
    ftpClient.enterLocalPassiveMode();

    File localFile = new File("local/path/file.txt");
    InputStream inputStream = new FileInputStream(localFile);
    boolean success = ftpClient.storeFile("remote/path/file.txt", inputStream);
    inputStream.close();

    if (success) {
        System.out.println("File uploaded successfully");
    }
} finally {
    if (ftpClient.isConnected()) {
        ftpClient.logout();
        ftpClient.disconnect();
    }
}

标签: 附件java
分享给朋友:

相关文章

java如何运行

java如何运行

运行Java程序的基本方法 Java程序的运行需要经过编写、编译和执行三个主要阶段。以下是具体步骤: 编写Java源代码 创建一个以.java为后缀的文件,例如HelloWorld.java。文件内…

java如何输出

java如何输出

输出到控制台 使用 System.out.println() 方法输出内容到控制台,适用于调试或简单信息展示。 示例代码: System.out.println("Hello, World!")…

如何自学java

如何自学java

选择合适的学习资源 从官方文档开始,Oracle提供的Java官方教程(Java Tutorials)是权威且免费的学习资料。在线平台如Codecademy、Coursera或Udemy提供互动式课程…

java如何创建类

java如何创建类

创建类的基本语法 在Java中,类通过class关键字定义,语法如下: [访问修饰符] class 类名 { // 成员变量(属性) // 构造方法 // 成员方法 }…

java如何输入数组

java如何输入数组

输入数组的方法 在Java中,可以通过多种方式输入数组,具体取决于输入源(如控制台、文件等)和数组类型(如基本类型或对象类型)。以下是几种常见的方法: 使用Scanner从控制台输入 对于基本数据类…

java如何解决高并发

java如何解决高并发

Java 高并发解决方案 使用线程池优化资源管理 线程池(如 ThreadPoolExecutor)能避免频繁创建和销毁线程的开销。通过核心线程数、最大线程数和任务队列的合理配置,可以平衡系统负载。例…