2015-07-16 1 views
0

Я загружаю изображение с SD-карты в AWS S3, он загружается правильно, но проблема в том, что он создает папку с дорожкой SD-карты в AWS, подобную этой «/storage/sdcard0/Documents/ABCD/xyz.jpg», я хочу только для файлов без создания каких-либо папок.Как загрузить только файлы без создания SD-карты в AWS S3?

String csvPath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/Documents/ABCD/xyz.jpg"; 

S3PutObjectTask s3 = new S3PutObjectTask(this,fileName); 
s3.execute(fileName); 

public class S3PutObjectTask extends AsyncTask<String, Void, S3TaskResult> { 

    /*Variable*/ 
    Activity activity; 
    String imageName; 
    String fileName; 
    ProgressDialog pDialog; 

    /*AWS*/ 
    AmazonS3Client s3Client; 

    public S3PutObjectTask(Activity activity,String fileName) { 
     this.activity = activity; 
     this.fileName = fileName; 
    } 

    @Override 
    protected void onPreExecute(){ 
     super.onPreExecute(); 

     pDialog = new ProgressDialog(activity); 
     pDialog.setTitle(""); 
     pDialog.setMessage("Please Wait..."); 
     pDialog.setCancelable(false); 
     pDialog.show(); 

     s3Client = new AmazonS3Client(new BasicAWSCredentials(AppConstants.ACCESS_KEY_ID, AppConstants.SECRET_KEY)); 
     s3Client.setRegion(Region.getRegion(Regions.US_EAST_1)); 
    } 

    @Override 
    protected S3TaskResult doInBackground(String... uris) { 

     S3TaskResult result = new S3TaskResult(); 

     if (uris == null || uris[0].length()==0){ 
      return null; 
     } 

     Uri selectedCSV = Uri.fromFile(new File(uris[0])); 

     ContentResolver resolver = activity.getContentResolver(); 

     File file=new File(uris[0]); 

     ObjectMetadata metadata = new ObjectMetadata(); 
     metadata.setContentType("image/jpeg"); 

     if(file.length()!=0){ 
      metadata.setContentLength(file.length()); 
     } 

     try { 
      PutObjectRequest por = new PutObjectRequest(AppConstants.getAbcdListBucket(),uris[0], 
      resolver.openInputStream(selectedCSV),metadata); 
      s3Client.putObject(por); 


     } catch (Exception exception) { 
      result.setErrorMessage(exception.getMessage()); 
     } 
     return result; 
    } 

    protected void onPostExecute(S3TaskResult result){ 
     if(pDialog!=null && pDialog.isShowing()){ 
      pDialog.dismiss(); 
    } 
} 

Просьба ознакомиться с моим кодом и предложить мне некоторое решение.

ответ

2

2-й параметр «Строковый ключ» определяет, в какую папку вы загружаете и что такое имя файла.

PutObjectRequest(AppConstants.getAbcdListBucket(), "My Folder/filename.jpg", resolver.openInputStream(selectedCSV),metadata); 
+0

эй спасибо, можете ли вы рассказать мне, как загружать только файлы, не создавая никакого пути в AWS ... –

Смежные вопросы