2016-04-30 2 views
1

Как загрузить файл из веб-сервисов Amazon Web Services в определенную папку.Android Amazon s3 bucket

На данный момент я импортирую проект утилиты amazon transfer Utility в моей студии android, и он отлично работает, но всякий раз, когда я загружаю файл из корзины AWS-S3, загружаемый в внешнее хранилище по умолчанию. Итак, я хочу, чтобы файл загружался в определенную папку, такую ​​как storage/folder_name/file_name.txt

ответ

1

Попробуйте это .. Я использую это в моем проекте, способного загрузить изображение в определенную папку ..

File imageImage = new File(mContext.getDir(USER_PROFILE_DIRECTORY, Context.MODE_PRIVATE)+ ImageName).getAbsoluteFile(); 
Download(checkImage,Constants.AMAZON_BUCKET_IMAGE,ImageName); 

/** 
* To download the image from the Amazon S3 bucket and store the image locally to the particular directory 
* @param DownloadingImagePath Source path of the image file to be stored 
* @param ImageName Image file name/Object key of Amazon S3 
* @param ImageBucket Amazon S3 bucket name 
*/ 
public void Download(File DownloadingImagePath,String ImageBucket,String ImageName){ 
try{ 
     AWSCredentials credentials = new BasicAWSCredentials(ACCESS_KEY, SECRET_KEY); 
     AmazonS3 s3 = new AmazonS3Client(credentials); 
       java.security.Security.setProperty("networkaddress.cache.ttl" , "60"); 
       s3.setRegion(Region.getRegion(Regions.AP_SOUTHEAST_1)); 
       s3.setEndpoint("https://s3-ap-southeast-1.amazonaws.com/"); 
       TransferUtility transferUtility = new TransferUtility(s3, mContext); 
       TransferObserver observer = transferUtility.download(ImageBucket, ImageName, DownloadingImagePath); 
       observer.setTransferListener(new TransferListener() { 
        @Override 
        public void onStateChanged(int id, TransferState state) { 
         //Log.e("Amazon Stats",state.name()); 
        } 

        @Override 
        public void onProgressChanged(int id, long bytesCurrent, long bytesTotal) { 

        } 

        @Override 
        public void onError(int id, Exception ex) { 

        } 
       }); 
       } catch (Exception ignored){ 
      } 
     } 
+0

you'r прием. Пожалуйста, если этот ответ поможет вам принять его. Это может помочь другим решить, как искать то же самое .. Наслаждайтесь кодированием ......... –

+0

Привет Андан, .. Я могу сделать это, что вы мне предлагаете ... еще вопрос ... У меня так много файлов в ведро S3, но у меня есть только тот файл, который я нажал ... Итак, я хочу загрузить весь файл из ведра S3 в мое loacal/внешнее хранилище ..... Любые дополнительные предложения значительны .. –

+0

Мои изображения сохраняются в папке внутри ведра, поэтому я должен упомянуть папку как имя ведра или упомянуть ее в ключе? –

1

Вы можете использовать AWS SDK, чтобы загрузить файл в любое место, которое вы хотите. Или используйте инструмент CLI, как AWS CLI или s3cmd

+0

Большое спасибо Шимона –