ギャラリーからs3バケットへの画像のアップロード-ファイルオブジェクトを作成しますか?

マイケルブレイク

AWS SDKには、Fileデータをバケットにアップロードするためのオブジェクトが必要です。に必要なFileオブジェクトの作成に問題がありますtransferUtility.upload私はnew File(selectedImageUri.getPath())動作しないことを知っています。URIからファイルを作成する方法について読んでみましたが、簡単な方法はないようです。私は他のものを使うべきTransferUtilityですか?

public class SettingsActivity extends AppCompatActivity {
    ...

    private class ChangeSettingsTask extends AsyncTask<Void, Void, Boolean> {

    public void uploadData(File image) {
        TransferUtility transferUtility =
                TransferUtility.builder()
                        .defaultBucket("some-bucket")
                        .context(getApplicationContext())
                        .s3Client(new AmazonS3Client( new BasicAWSCredentials( "something", "something") ))
                        .build();

        TransferObserver uploadObserver =
                transferUtility.upload("somefile.jpg", image);

        ...
    }

    @Override
    protected void onActivityResult(int reqCode, int resultCode, Intent data) {
        super.onActivityResult(reqCode, resultCode, data);

        if (resultCode == RESULT_OK) {
            Uri selectedImageUri = data.getData();
            uploadData(new File(selectedImageUri.getPath()));
        }
    }
}
Karthikeyan

S3TransferUtilitySampleアプリからこの関数を使用して、URIのファイルパスを取得できます。

    private String getPath(Uri uri) throws URISyntaxException {
        final boolean needToCheckUri = Build.VERSION.SDK_INT >= 19;
        String selection = null;
        String[] selectionArgs = null;
        // Uri is different in versions after KITKAT (Android 4.4), we need to
        // deal with different Uris.
        if (needToCheckUri && DocumentsContract.isDocumentUri(getApplicationContext(), uri)) {
            if (isExternalStorageDocument(uri)) {
                final String docId = DocumentsContract.getDocumentId(uri);
                final String[] split = docId.split(":");
                return Environment.getExternalStorageDirectory() + "/" + split[1];
            } else if (isDownloadsDocument(uri)) {
                final String id = DocumentsContract.getDocumentId(uri);
                uri = ContentUris.withAppendedId(
                        Uri.parse("content://downloads/public_downloads"), Long.valueOf(id));
            } else if (isMediaDocument(uri)) {
                final String docId = DocumentsContract.getDocumentId(uri);
                final String[] split = docId.split(":");
                final String type = split[0];
                if ("image".equals(type)) {
                    uri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
                } else if ("video".equals(type)) {
                    uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
                } else if ("audio".equals(type)) {
                    uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
                }
                selection = "_id=?";
                selectionArgs = new String[] {
                        split[1]
                };
            }
        }
        if ("content".equalsIgnoreCase(uri.getScheme())) {
            String[] projection = {
                    MediaStore.Images.Media.DATA
            };
            Cursor cursor = null;
            try {
                cursor = getContentResolver()
                        .query(uri, projection, selection, selectionArgs, null);
                int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                if (cursor.moveToFirst()) {
                    return cursor.getString(column_index);
                }
            } catch (Exception e) {
            }
        } else if ("file".equalsIgnoreCase(uri.getScheme())) {
            return uri.getPath();
        }
        return null;
    }

これで、filePathができたら、そこからファイルオブジェクトを作成できます。

File file = new File(filePath);
TransferObserver observer = transferUtility.upload(Constants.BUCKET_NAME, file.getName(),
file);

詳細については、サンプルを試すことができます:https//github.com/awslabs/aws-sdk-android-samples/tree/master/S3TransferUtilitySample

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

S3バケットから画像(ファイル)をレンダリングする方法は、フロントエンドですべてのパブリックアクセスをブロックしました(プライベート書き込み、プライベート読み取り)

分類Dev

AWSラムダからs3バケットへのスクリーンショットのアップロードが失敗する

分類Dev

AWS S3バケット、アップロードされた画像ファイルにアクセスできるのは、個々のオブジェクトの権限を手動でパブリックに設定した後のみです

分類Dev

S3バケットへのファイルのアップロード

分類Dev

ディレクトリ内のファイルから多数のオブジェクトを作成します

分類Dev

パッケージ内の別のファイルでクラスからオブジェクトを作成します

分類Dev

S3バケットからアップロードされたすべての画像ファイル拡張子を変更する方法

分類Dev

データバッファ用のファイルのようなオブジェクトを作成します

分類Dev

ヘッダーファイルにオブジェクトを正しく作成していますか?

分類Dev

既存のオブジェクトを上書きせずに、AWSS3バケットに複数のファイルをアップロードします

分類Dev

nodejsのファイルからjavascriptオブジェクトをロードし、エラーを解析します

分類Dev

nodejsのファイルからjavascriptオブジェクトをロードし、エラーを解析します

分類Dev

'jq'を使用して既存のjsonファイルからオブジェクトを作成します

分類Dev

Javaの文字列からメモリにファイルオブジェクトを作成します

分類Dev

ファイル.txtから15行の2列のPowerShellオブジェクトを作成して表示します

分類Dev

テキストファイルの行からオブジェクトを作成します

分類Dev

ギャラリーからサーバーへのファイルのアップロードをキャンセルする方法

分類Dev

ハイブリッドアプリケーションのデバイスのギャラリーから複数の画像を選択します

分類Dev

Hadoop S3Aファイルシステム、オブジェクトのアップロードを中止しますか?

分類Dev

xPathを使用してxmlファイルからJavaオブジェクトを作成します

分類Dev

awsはオブジェクトをS3バケットにアップロードし、データの詳細をラムダに渡します

分類Dev

任意の.classファイルからBCEL JavaClassオブジェクトを作成します

分類Dev

ApacheFlinkの入力ファイルからオブジェクトを作成します

分類Dev

Powershellは複数のファイルからオブジェクトを作成します

分類Dev

ギャラリーからiOSのサポートファイルに画像をアップロードするにはどうすればよいですか?

分類Dev

$ httpを使用してサーバーからダウンロードしたrawファイルからBlobオブジェクトを作成します。

分類Dev

MicrosoftEdgeはファイルオブジェクトを作成します

分類Dev

JavaScript-jsonオブジェクトからファイルを作成し、FormDataで使用します

分類Dev

AndroidアプリギャラリーからローカルのSpringサーバーに画像をアップロードします

Related 関連記事

  1. 1

    S3バケットから画像(ファイル)をレンダリングする方法は、フロントエンドですべてのパブリックアクセスをブロックしました(プライベート書き込み、プライベート読み取り)

  2. 2

    AWSラムダからs3バケットへのスクリーンショットのアップロードが失敗する

  3. 3

    AWS S3バケット、アップロードされた画像ファイルにアクセスできるのは、個々のオブジェクトの権限を手動でパブリックに設定した後のみです

  4. 4

    S3バケットへのファイルのアップロード

  5. 5

    ディレクトリ内のファイルから多数のオブジェクトを作成します

  6. 6

    パッケージ内の別のファイルでクラスからオブジェクトを作成します

  7. 7

    S3バケットからアップロードされたすべての画像ファイル拡張子を変更する方法

  8. 8

    データバッファ用のファイルのようなオブジェクトを作成します

  9. 9

    ヘッダーファイルにオブジェクトを正しく作成していますか?

  10. 10

    既存のオブジェクトを上書きせずに、AWSS3バケットに複数のファイルをアップロードします

  11. 11

    nodejsのファイルからjavascriptオブジェクトをロードし、エラーを解析します

  12. 12

    nodejsのファイルからjavascriptオブジェクトをロードし、エラーを解析します

  13. 13

    'jq'を使用して既存のjsonファイルからオブジェクトを作成します

  14. 14

    Javaの文字列からメモリにファイルオブジェクトを作成します

  15. 15

    ファイル.txtから15行の2列のPowerShellオブジェクトを作成して表示します

  16. 16

    テキストファイルの行からオブジェクトを作成します

  17. 17

    ギャラリーからサーバーへのファイルのアップロードをキャンセルする方法

  18. 18

    ハイブリッドアプリケーションのデバイスのギャラリーから複数の画像を選択します

  19. 19

    Hadoop S3Aファイルシステム、オブジェクトのアップロードを中止しますか?

  20. 20

    xPathを使用してxmlファイルからJavaオブジェクトを作成します

  21. 21

    awsはオブジェクトをS3バケットにアップロードし、データの詳細をラムダに渡します

  22. 22

    任意の.classファイルからBCEL JavaClassオブジェクトを作成します

  23. 23

    ApacheFlinkの入力ファイルからオブジェクトを作成します

  24. 24

    Powershellは複数のファイルからオブジェクトを作成します

  25. 25

    ギャラリーからiOSのサポートファイルに画像をアップロードするにはどうすればよいですか?

  26. 26

    $ httpを使用してサーバーからダウンロードしたrawファイルからBlobオブジェクトを作成します。

  27. 27

    MicrosoftEdgeはファイルオブジェクトを作成します

  28. 28

    JavaScript-jsonオブジェクトからファイルを作成し、FormDataで使用します

  29. 29

    AndroidアプリギャラリーからローカルのSpringサーバーに画像をアップロードします

ホットタグ

アーカイブ