Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用AWS SDK将文件上载到S3_Java_Android_Amazon Web Services_Libgdx - Fatal编程技术网

Java 使用AWS SDK将文件上载到S3

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");

我正在尝试使用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");
        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)