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?
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 ));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With