Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

AWS Java putObject InvalidRedirectLocation

When I try to upload a file to s3 using the aws java sdk I get an error about InvalidRedirectLocation.

Exception in thread "main" com.amazonaws.services.s3.model.AmazonS3Exception: 
The website redirect location must have a prefix of 'http://' or 'https://' or '/'. 
(Service: Amazon S3; Status Code: 400; Error Code: InvalidRedirectLocation; 
Request ID: E801AFDA2A22A20E; S3 Extended Request ID: AAlLOlndWp2dAAA56Vlxs+ZTLCK/
HHaPv/ySaqjIAAAO4wv8qzkm17A7o7YOrtmOx4YJO+yfAAA=), S3 Extended Request ID: LAlAO
lndAp2dAAPA6Vlxs+ZTLCK/AAaPv/ySaqjIAAAO4wv8qzkm17b7o7AOrtmOx4AAO+yflAA=
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1630)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1302)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1056)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:743)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:717)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667)
    at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649)
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4330)
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4277)
    at com.amazonaws.services.s3.AmazonS3Client.putObject(AmazonS3Client.java:1750)
    at awsTest.main(awsTest.java:67)

Here is a snippet from my code.

String s3Bucket = "test_bucket";
String s3FileName = "test_file.txt";
String localFileName = "C:\\Users\\ABC\\Desktop\\test_file.txt";    

s3.putObject(new PutObjectRequest(s3Bucket, s3FileName, localFileName));

I am able to list files in a bucket and copy files from one bucket to another, but I am not able upload files. Any idea why?

like image 911
Katanic Avatar asked Oct 26 '25 01:10

Katanic


1 Answers

I was passing the location of the file as a string to the putObject function, I needed to use the File Class so the following code solved my issue.

String s3Bucket = "test_bucket";
String s3FileName = "test_file.txt";
String localFileName = "C:\\Users\\ABC\\Desktop\\test_file.txt";    
File file = new File(localFileName);

s3.putObject(new PutObjectRequest(s3Bucket, s3FileName, file ));
like image 157
Katanic Avatar answered Oct 27 '25 13:10

Katanic



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!