Java 使用AWS SDK将文件上载到S3
我正在尝试使用AWS SDK将文件上载到AmazonS3存储桶Java 使用AWS SDK将文件上载到S3,java,android,amazon-web-services,libgdx,Java,Android,Amazon Web Services,Libgdx,我正在尝试使用AWS SDK将文件上载到AmazonS3存储桶 class LogToS3Bucket extends Thread{ public void run() { super.run(); Gdx.app.log("msg", "secondThreadRunning yeahhhhh!"); File fileToPut = new File("../../../MyProject", "settings.txt");
class LogToS3Bucket extends Thread{
public void run() {
super.run();
Gdx.app.log("msg", "secondThreadRunning yeahhhhh!");
File fileToPut = new File("../../../MyProject", "settings.txt");
String accessKey = "<accessKey>";
String secretKey = "<secretKey>";
AWSCredentials credentials = new BasicAWSCredentials(accessKey, secretKey);
AmazonS3 conn = new AmazonS3Client(credentials);
conn.putObject("bucketname", "filename.txt", fileToPut);
}
}
我想我明白了——因为我的应用程序一直在编辑那个文件,而这个片段发生在一个单独的线程中,所以在上传之前,文件实际上已经被更改了。。。如果我制作一个临时文件副本并将其上传到bucket中,它就会起作用。您是否尝试过AWS android sdk提供的示例?是的,这就是示例代码。但我的手机无法使用。我认为你必须为android设备使用android sdk。这有点烦人,因为我需要一个跨平台的解决方案。临时拷贝??你能再解释一下吗?制作文件的深度副本(在内存中或通过在文件系统上制作副本来拍摄文件数据的快照),这样你就不会在上传过程中写入文件。您也可以使用一些锁定机制来保持上载和文件写入分开。
Exception in thread "Thread-1" Status Code: 400, AWS Service: Amazon S3, AWS Error Code: BadDigest, AWS Error Message: The Content-MD5 you specified did not match what we received.
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:614)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:312)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:165)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:2951)
at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1123)
at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:979)
at com.myproject.LogToS3Bucket.run(LogToS3Bucket.java:22)