簡體   English   中英

如何僅上傳文件而不在AWS S3中創建SD卡路徑?

[英]How to upload only files without creating SD-Card path in AWS S3?

我正在將圖像從SD卡上傳到AWS S3,它正確上傳,但是問題是它正在AWS中像這樣的“ /storage/sdcard0/Documents/ABCD/xyz.jpg”創建SD卡路徑文件夾,我只想文件而不創建任何文件夾。

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();
    }
}

請仔細閱讀我的代碼,並向我提出一些解決方案。

第二個參數“字符串鍵”控制要上傳到的文件夾以及文件名。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM