ReactでAxiosを使用してS3(PUT)にアップロードすると、データが破損します

ブライアンバンクロフト

次の機能を使用して、S3に画像をアップロードすることはできますが、画像を取得しようとすると開くことができません。以下は、「react-dropzone」を使用してファイルを処理するReactアプリケーションで使用される関数です。

import axios, { post } from 'axios'

import { Buffer } from 'buffer'

const processImage = ({ file }) => {
  const reader = new FileReader()

  reader.onload = async () => {
    const base64data = reader.result
    const bufferdata = Buffer.from(base64data, 'base64')


    const generateSignedS3Url = '/.netlify/functions/get-s3-urls'

    // Obtains signed URLs from a Netlify Serverless Function
    const { data } = await post(generateSignedS3Url, {
      clientFilename: file.name,
      mimeType: file.type,
    }).catch(e => {
      console.error('Error in generating signed url ', e)
    })

    axios({
      method: 'PUT',
      url: data.putUrl,
      data: bufferdata,
      headers: { 'Content-Type': file.type, 'Content-Encoding': 'base64' },
    }).catch(e => {
      console.error(e) 
    })
  }
  reader.readAsDataURL(file)
}

以下に、上記で呼び出されたサーバーレス関数の署名付きURLを取得するために使用されるパラメーターを示します。

const putParams = {
      Bucket,
      Key,
      Expires: 2 * 60,
      ContentType: body.mimeType,
      ContentEncoding: 'base64',
    }
    const putUrl = s3.getSignedUrl('putObject', putParams)

ここでbody.mimeType、になります'image/jpeg'

同様のStackOverflowの質問からスキャンして、次のことを確認しました。

  1. ヘッダー'Content-Encoding'はに設定されます'base64'
  2. NPMバッファーライブラリ(これはクライアントアプリケーションです)を使用してコンテンツを送信するためにバッファーを使用しています
  3. ヘッダー'Content-Type'は送信されるファイルと一致します(つまり、ファイル "background.jpg"の場合、ヘッダーは 'image / jpeg'に設定されます)
  4. 私もバッファなしで送信しようとしました

送信する前に、同様のSOの質問を確認しました。彼らには、123他にもありますが、それらはノードバックエンド用です。

travellingprog

reader.resultエンコードされたデータの前にプレフィックスがあります。MDNで説明されているように

最初にBase64でエンコードされたデータの前にあるData-URL宣言を削除しないと、blobの結果をBase64として直接デコードすることはできません。Base64でエンコードされた文字列のみを取得するには、最初data:*/*;base64,に結果から削除します。

したがって、次のようなことができます。

const base64data = reader.result.split(',')[1];

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

jspdf-pngを使用してs3に直接アップロードされたpdf、pngが破損しています

分類Dev

S3はストリームを使用すると破損したファイルをアップロードします

分類Dev

nodejsがPDFをS3バケットの破損したファイルにアップロードしています

分類Dev

react / axiosとgolang / ginを介してS3に画像をアップロードする方法

分類Dev

Laravelでput()を使用して破損した画像をアップロードする

分類Dev

CLIを使用してs3にアップロードするときに、コンテンツ処理メタデータを追加します

分類Dev

AWSラムダとS3 - アップロードされたPDFファイルが空白/破損しています

分類Dev

mime / multipartを使用してアップロードするとファイルが破損する

分類Dev

Laravel Interventionイメージを使用してS3にアップロードすると、パスではなくブール値が返されます

分類Dev

ファイルをGlacierに移動すると、S3で同期を使用して新しいアップロードが行われますか?

分類Dev

Android Studio Gradleを6.1.1にアップグレードすると、Greendao3GradlePluginが破損します

分類Dev

S3に画像をアップロードするとアップロードが完了しません

分類Dev

ストリームPassThroughを使用してNode / Express経由でS3にAWSSDKファイルをアップロード-ファイルは常に破損しています

分類Dev

C ++での画像HTTPアップロードが破損しています

分類Dev

ChrubuntuをアップデートするとChromeOSが破損しますか?

分類Dev

Carrierwaveを使用してカスタムS3メタデータをアップロードする方法

分類Dev

Laravel5.1経由でAWSS3に画像/ファイルをアップロードします。残念ながら画像は破損しています

分類Dev

Laravel5.1経由でAWSS3に画像/ファイルをアップロードします。残念ながら画像は破損しています。

分類Dev

AWS CLIはS3にデータをアップロードするときにSSLを使用しますか?

分類Dev

AWS CLIはS3にデータをアップロードするときにSSLを使用しますか?

分類Dev

Rubyを使用して大きなファイルをS3にアップロードすると、メモリ不足エラーが発生します。チャンクで読み取ってアップロードする方法は?

分類Dev

Flask Webサーバーは、処理およびS3へのアップロード時に画像を破損します

分類Dev

LaravelとVueでaxiosを使用してファイルと入力データをアップロードする

分類Dev

転送が失敗したときに破損することなくデータを再アップロードするためにaws-cliを信頼できますか?

分類Dev

エラー:APKをアップロードするとAndroidManifest.xmlが破損します

分類Dev

アップロードに成功すると、画像またはファイルが破損します

分類Dev

rusotoを使用してS3に文字列をアップロードする

分類Dev

Nodeを使用してS3に画像をアップロードする方法

分類Dev

文字列をgzipNodejsとしてs3にアップロードする方法

Related 関連記事

  1. 1

    jspdf-pngを使用してs3に直接アップロードされたpdf、pngが破損しています

  2. 2

    S3はストリームを使用すると破損したファイルをアップロードします

  3. 3

    nodejsがPDFをS3バケットの破損したファイルにアップロードしています

  4. 4

    react / axiosとgolang / ginを介してS3に画像をアップロードする方法

  5. 5

    Laravelでput()を使用して破損した画像をアップロードする

  6. 6

    CLIを使用してs3にアップロードするときに、コンテンツ処理メタデータを追加します

  7. 7

    AWSラムダとS3 - アップロードされたPDFファイルが空白/破損しています

  8. 8

    mime / multipartを使用してアップロードするとファイルが破損する

  9. 9

    Laravel Interventionイメージを使用してS3にアップロードすると、パスではなくブール値が返されます

  10. 10

    ファイルをGlacierに移動すると、S3で同期を使用して新しいアップロードが行われますか?

  11. 11

    Android Studio Gradleを6.1.1にアップグレードすると、Greendao3GradlePluginが破損します

  12. 12

    S3に画像をアップロードするとアップロードが完了しません

  13. 13

    ストリームPassThroughを使用してNode / Express経由でS3にAWSSDKファイルをアップロード-ファイルは常に破損しています

  14. 14

    C ++での画像HTTPアップロードが破損しています

  15. 15

    ChrubuntuをアップデートするとChromeOSが破損しますか?

  16. 16

    Carrierwaveを使用してカスタムS3メタデータをアップロードする方法

  17. 17

    Laravel5.1経由でAWSS3に画像/ファイルをアップロードします。残念ながら画像は破損しています

  18. 18

    Laravel5.1経由でAWSS3に画像/ファイルをアップロードします。残念ながら画像は破損しています。

  19. 19

    AWS CLIはS3にデータをアップロードするときにSSLを使用しますか?

  20. 20

    AWS CLIはS3にデータをアップロードするときにSSLを使用しますか?

  21. 21

    Rubyを使用して大きなファイルをS3にアップロードすると、メモリ不足エラーが発生します。チャンクで読み取ってアップロードする方法は?

  22. 22

    Flask Webサーバーは、処理およびS3へのアップロード時に画像を破損します

  23. 23

    LaravelとVueでaxiosを使用してファイルと入力データをアップロードする

  24. 24

    転送が失敗したときに破損することなくデータを再アップロードするためにaws-cliを信頼できますか?

  25. 25

    エラー:APKをアップロードするとAndroidManifest.xmlが破損します

  26. 26

    アップロードに成功すると、画像またはファイルが破損します

  27. 27

    rusotoを使用してS3に文字列をアップロードする

  28. 28

    Nodeを使用してS3に画像をアップロードする方法

  29. 29

    文字列をgzipNodejsとしてs3にアップロードする方法

ホットタグ

アーカイブ