事前に署名されたURLを使用してアップロードした後、ファイルに追加情報があるAWSS3上のファイル

jagad89

事前に署名されたURLを使用してファイルをS3バケットに直接アップロードしようとしています。

以下はnode.jsで記述されたサーバーエンドコードであり、署名されたURLを正常に作成します。

const s3 = new AWS.S3({
    accessKeyId: config.accessKeyId,
    secretAccessKey:  config.secretAccessKey,
    region: config.awsConfig.region
});
const signedUrlExpireSeconds = 60 * 60;
let mimeType = "video/mp4";

const filename =Date.now();

const Key = `${filename}.mp4`;

const params = {
    Bucket: config.awsConfig.aws_upload_bucket, 
    Key: Key,
    Expires: signedUrlExpireSeconds,
    ACL: 'public-read',
    ContentType: mimeType
    };

s3.getSignedUrl('putObject', params, function (err, url) {
    if (err) {
        console.log('Error getting presigned url from AWS S3');
        res.json({ success: false, message: 'Pre-Signed URL error', urls: fileurls });
    }
    else {
        console.log('Presigned URL: ', url);
        res.json({ success: true, message: 'AWS SDK S3 Pre-signed urls generated successfully.', url: url, Key:Key, ContentType: mimeType  });
    }
});

以下はReactの最後に書かれたコードです。

const DropzoneArea = props => {
    const [files, setFiles] = useState([]);
    let awsFile = '';

    const onUploadHandler = files => {
        if (files.length === 0) {
            console.log('Debug : [components DropzoneArea onUploadHandler] files => ', files);
            return;
        }
        awsFile = files[0]
        // calling the API to get presigned url.
        getPreSignedURL(files[0].type,S3preSignedURLCallback)        
    };

    const S3preSignedURLCallback = videoData => {
        const xhr = new XMLHttpRequest();
        xhr.open('PUT', videoData.url);
        xhr.setRequestHeader('Content-Type', videoData.ContentType);
        var res = new FormData();
        res.append('file', awsFile);
        xhr.send(res);
    };
}

上記のコードを使用すると、ファイルはs3に正常にアップロードされますが、ビデオを再生できませんでした。そこで、S3上のファイルをアップロードした実際のファイルと比較しました。S3ファイルにも追加のリクエストデータがほとんど書き込まれていないことがわかりました。ここに画像の説明を入力してください

私がここで行っている小さな間違いは、バグを見つけることができません。助けてください。

マルコスカサグランデ

使用せずformData、ファイルを直接送信してください

const S3preSignedURLCallback = videoData => {
        const xhr = new XMLHttpRequest();
        xhr.open('PUT', videoData.url);
        xhr.setRequestHeader('Content-Type', videoData.ContentType);
        // Send the binary data.
        // Since a File is a Blob, you can send it directly.
        xmlHttpRequest.send(awsFile);
};

表示される違いは、AWSが未加工のリクエストを解析せずに保存しているためです。また、正しい画像がマルチパート/フォームデータリクエストであることがわかります。

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

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

編集
0

コメントを追加

0

関連記事

Retrofit2を使用してAWSS3の事前署名されたURLにファイルをアップロードします

AWSS3の事前署名されたURLRetrofit2AndroidにアップロードファイルをPUT

Rubyで事前に署名されたPOSTファイルをAWSS3にアップロードするにはどうすればよいですか?

角度またはJavaScriptで事前に署名されたURLを使用してS3バケットにファイルをアップロードする方法

Rails 3.1:PaperClip / Mongoid / SimpleForm <-ネストされたフォームを使用してAWSS3にファイルをアップロードする

NodeJsがファイルをAWSS3にアップロード-破損したファイル

Pythonを使用してファイルをGoogleストレージにアップロードするための事前署名されたURLを生成します

事前に署名されたURLを使用してAWSs3からファイルの内容を読み取ります

Ionic android-事前に署名されたURLを使用してファイルをS3にアップロードします(エラーコード:3)

NodeJSを使用してAWSS3に複数のファイルをアップロードする

アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレス指定する必要がありますAWSS3へのファイルのアップロード

アクセスしようとしているバケットは、指定されたエンドポイントを使用してアドレス指定する必要がありますAWSS3へのファイルのアップロード

生成された事前署名されたURLを使用してファイルをminioにアップロードする要求にフィールドがありません

ファイルのアップロード後にAWSS3の非表示フラグが失われました

NodeJSを使用してffmpegファイルの出力をAWSs3にアップロードします

Laravelにアップロードした後、awss3ファイルのパーミッションをパブリックに設定する

AWSAppSyncを使用してAWSS3にファイルをアップロードする方法

S3にアップロードされたファイルのURLを取得します(ファイルがアップロードされた後)

事前に署名されたAWSS3 URLを使用してアップロードされたPDFに正しいコンテンツタイプがないのはなぜですか?

スキッパーを使用したSails.jsファイルのAWSS3へのアップロード

アップロードされたファイルをAWSS3から取得します

std :: fstreamでgz圧縮されたファイルの事前署名されたURLを使用して、AWS S3 HTTPアップロードのコンテンツの長さを設定するにはどうすればよいですか?

演奏する!ファイルをアップロードしてAWSS3に保存します

c#を使用してAWSS3バケットファイルのアップロードを実装する必要があります。ファイルサイズは制限されていませんが

何をしても、事前に署名されたURLを使用してファイルをS3にアップロードできません。AWSコマンドラインは機能します。CURLおよびその他= 403

ChaliceAPI呼び出しを介したAWSS3へのファイルのアップロード

AWSS3-事前に署名されたURLを介してファイルをPUTするときに400の不正なリクエスト

iOSSDKを使用してAWSS3にファイルをアップロードするときに空白のカスタムメタデータ

RのAWSS3バケットから最後に変更されたファイルを取得します

TOP 一覧

  1. 1

    Unity:未知のスクリプトをGameObject(カスタムエディター)に動的にアタッチする方法

  2. 2

    セレンのモデルダイアログからテキストを抽出するにはどうすればよいですか?

  3. 3

    Ansibleで複数行のシェルスクリプトを実行する方法

  4. 4

    tkinterウィンドウを閉じてもPythonプログラムが終了しない

  5. 5

    Crashlytics:コンパイラー生成とはどういう意味ですか?

  6. 6

    GoDaddyでのCKEditorとKCfinderの画像プレビュー

  7. 7

    Windows 10 Pro 1709を1803、1809、または1903に更新しますか?

  8. 8

    Chromeウェブアプリのウェブビューの高さの問題

  9. 9

    モーダルダイアログを自動的に閉じる-サーバーコードが完了したら、Googleスプレッドシートのダイアログを閉じます

  10. 10

    Windows 10の起動時間:以前は20秒でしたが、現在は6〜8倍になっています

  11. 11

    Reactでclsxを使用する方法

  12. 12

    ファイル内の2つのマーカー間のテキストを、別のファイルのテキストのセクションに置き換えるにはどうすればよいですか?

  13. 13

    MLでのデータ前処理の背後にある直感

  14. 14

    グラフからテーブルに条件付き書式を適用するにはどうすればよいですか?

  15. 15

    Pythonを使用して同じ列の同じ値の間の時差を取得する方法

  16. 16

    mutate_allとifelseを組み合わせるにはどうすればよいですか

  17. 17

    ネットワークグラフで、ネットワークコンポーネントにカーソルを合わせたときに、それらを強調表示するにはどうすればよいですか?

  18. 18

    テキストフィールドの値に基づいて UIslider を移動します

  19. 19

    BLOBストレージからデータを読み取り、Azure関数アプリを使用してデータにアクセスする方法

  20. 20

    PowerShellの分割ファイルへのヘッダーの追加

  21. 21

    ソートされた検索、ターゲット値未満の数をカウント

ホットタグ

アーカイブ