Developer Console

SDK for iOS Uploading and Downloading Files

Uploading and downloading files using the SDK for iOS

Uploading a File

You can upload files to Amazon Drive using the ACDSKClient uploadFile:... method. A file can be uploaded to a specific folder using the ACDSKUploadFileRequest parents parameter. If no parents are specified, then the file is uploaded to the root folder.

  // Upload a file
  ACDSKUploadFileRequest *request = [ACDSKUploadFileRequest new];
  // Set the local path of the file to upload
  request.filePath = localFilePath;
  // Set the name to use for the file in Amazon Drive
  request.name = @"NewCloudDriveFile";
  // Set the parent folder for the new file
  request.parents = @[parentID];

  // Make asynchronous request using instance of ACDSKClient
  [client uploadFile:uploadFile:request fail:^(NSError *error) {
      // Handle failure
  } progress:^(float progressed) {
      // Handle progress
  } success:^(ACDSKUploadFileResponse *response) {
      // Handle success
      // response consists of a ACDSKNode
  }];

Allowing Duplicate Files

By default, Amazon Drive rejects uploads of a file that have the same SHA-256 hashing as an existing file in the same Amazon Drive. It is possible to override this behavior by setting the ACDSKUploadFileRequest suppressDeduplication parameter.

  // Allow duplicate binary file to be uploaded
  uploadFileRequest.suppressDeduplication = YES;

Downloading a File

Files can be downloaded from Amazon Drive using the ACDSKClient downloadFile:... method.

  // Download a file
  ACDSKDownloadFileRequest *request = [ACDSKDownloadFileRequest new];
  request.fileID = fileID;

  // Make asynchronous request using instance of ACDSKClient
  [client downloadFile:request fail:^(NSError *error) {
      // Handle failure
  } progress:^(float progressed) {
      // Handle progress
  } success:^(ACDSKDownloadFileResponse *response) {
      // Handle success
      // response contains the location of the downloaded file
  }];

Progress

Upload and Download Progress

Uploads and downloads both take a progress block, making it easy to keep track of the process. When updating the UI in response to an asynchrounous ACDSKClient callback such as progress, be sure to do so on the main thread.

  [client downloadFile:request fail:^(NSError *error) {
      // Handle failure
  } progress:^(float progressed) {
      // Handle progress
      dispatch_async(dispatch_get_main_queue(), ^{
          // Update UI on the main thread
      });
  } success:^(ACDSKDownloadFileResponse *response) {
      // Handle success
  }];

Support

If you have any questions, see the Developer Forum.