Page updated Nov 12, 2023

Upload files

Amplify allows you to upload Files and InputStreams.

Upload InputStream

To upload data to S3 from an InputStream:

private void uploadInputStream() { try { InputStream exampleInputStream = getContentResolver().openInputStream(uri); Amplify.Storage.uploadInputStream( "ExampleKey", exampleInputStream, result -> Log.i("MyAmplifyApp", "Successfully uploaded: " + result.getKey()), storageFailure -> Log.e("MyAmplifyApp", "Upload failed", storageFailure) ); } catch (FileNotFoundException error) { Log.e("MyAmplifyApp", "Could not find file to open for input stream.", error); } }
1private void uploadInputStream() {
2 try {
3 InputStream exampleInputStream = getContentResolver().openInputStream(uri);
4
5 Amplify.Storage.uploadInputStream(
6 "ExampleKey",
7 exampleInputStream,
8 result -> Log.i("MyAmplifyApp", "Successfully uploaded: " + result.getKey()),
9 storageFailure -> Log.e("MyAmplifyApp", "Upload failed", storageFailure)
10 );
11 } catch (FileNotFoundException error) {
12 Log.e("MyAmplifyApp", "Could not find file to open for input stream.", error);
13 }
14}

Upload files

To upload to S3 from a data object, specify the key and the file to be uploaded.

private void uploadFile() { File exampleFile = new File(getApplicationContext().getFilesDir(), "ExampleKey"); try { BufferedWriter writer = new BufferedWriter(new FileWriter(exampleFile)); writer.append("Example file contents"); writer.close(); } catch (Exception exception) { Log.e("MyAmplifyApp", "Upload failed", exception); } Amplify.Storage.uploadFile( "ExampleKey", exampleFile, result -> Log.i("MyAmplifyApp", "Successfully uploaded: " + result.getKey()), storageFailure -> Log.e("MyAmplifyApp", "Upload failed", storageFailure) ); }
1private void uploadFile() {
2 File exampleFile = new File(getApplicationContext().getFilesDir(), "ExampleKey");
3
4 try {
5 BufferedWriter writer = new BufferedWriter(new FileWriter(exampleFile));
6 writer.append("Example file contents");
7 writer.close();
8 } catch (Exception exception) {
9 Log.e("MyAmplifyApp", "Upload failed", exception);
10 }
11
12 Amplify.Storage.uploadFile(
13 "ExampleKey",
14 exampleFile,
15 result -> Log.i("MyAmplifyApp", "Successfully uploaded: " + result.getKey()),
16 storageFailure -> Log.e("MyAmplifyApp", "Upload failed", storageFailure)
17 );
18}

To track progress of the upload, use the uploadFile API that includes a progress listener callback.

private void uploadFile() { File exampleFile = new File(getApplicationContext().getFilesDir(), "ExampleKey"); try { BufferedWriter writer = new BufferedWriter(new FileWriter(exampleFile)); writer.append("Example file contents"); writer.close(); } catch (Exception exception) { Log.e("MyAmplifyApp", "Upload failed", exception); } Amplify.Storage.uploadFile( "ExampleKey", exampleFile, StorageUploadFileOptions.defaultInstance(), progress -> Log.i("MyAmplifyApp", "Fraction completed: " + progress.getFractionCompleted()), result -> Log.i("MyAmplifyApp", "Successfully uploaded: " + result.getKey()), storageFailure -> Log.e("MyAmplifyApp", "Upload failed", storageFailure) ); }
1private void uploadFile() {
2 File exampleFile = new File(getApplicationContext().getFilesDir(), "ExampleKey");
3
4 try {
5 BufferedWriter writer = new BufferedWriter(new FileWriter(exampleFile));
6 writer.append("Example file contents");
7 writer.close();
8 } catch (Exception exception) {
9 Log.e("MyAmplifyApp", "Upload failed", exception);
10 }
11
12 Amplify.Storage.uploadFile(
13 "ExampleKey",
14 exampleFile,
15 StorageUploadFileOptions.defaultInstance(),
16 progress -> Log.i("MyAmplifyApp", "Fraction completed: " + progress.getFractionCompleted()),
17 result -> Log.i("MyAmplifyApp", "Successfully uploaded: " + result.getKey()),
18 storageFailure -> Log.e("MyAmplifyApp", "Upload failed", storageFailure)
19 );
20}

MultiPart upload

Amplify will automatically perform a S3 multipart upload for objects that are larger than 5MB. For more information about S3's multipart upload, see Uploading and copying objects using multipart upload