在java中将文件写入亚马逊s3

Bal*_*aji 0 java spring file amazon-s3

我已经用java轻松地将小文件上传到亚马逊s3存储桶。但是当我上传 50MB 的大文件时,花费的时间太长,我什至没有得到异常,但文件没有上传。我的代码很简单

s3client.putObject(new PutObjectRequest("dev.rivet.media.web", "all.wav",new File(file path)));
Run Code Online (Sandbox Code Playgroud)

谁能建议我解决这个问题

Har*_*ana 6

或者你可以看看https://github.com/minio/minio-java

Minio Java 库提供了更简单的 API 来访问 S3 兼容存储提供程序。

在此库中,putObject 通过在内部执行多部分操作来自动管理文件上传,并从中断处继续。

这是一个示例程序。

import io.minio.MinioClient;
import io.minio.errors.ClientException;
import org.xmlpull.v1.XmlPullParserException;

import java.io.FileInputStream;
import java.io.File;
import java.io.IOException;

public class PutObject {
  public static void main(String[] args) throws IOException, XmlPullParserException, ClientException {
    System.out.println("PutObject app");

    // Set s3 endpoint, region is calculated automatically
    MinioClient s3Client = new MinioClient("https://s3.amazonaws.com", "YOUR-ACCESSKEYID", "YOUR-SECRETACCESSKEY");

    File f = new File("C:/java/hello");
    InputStream f = new FileInputStream(f);

    // create object
    s3Client.putObject("bucketName", "objectName", "application/octet-stream",
                       f.length(), f);
  }
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助。