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

ニコラペス

nodejsexpressを使用してファイルをS3バケットにアップロードしています。これは私のコードです:

HTMLここでは、JqueryformDataを使用してファイルをアップロードします

<form id="form" action="" method="post" enctype="multipart/form-data">
    <input type="file" name="image" id="image" />
    <input class='submit-input' type="submit" value="Submit" />
</form>


<script src="/js/jquery.js"></script>
<script>
    $(document).ready(function(e){

    $("#form").on('submit', function(e){

        e.preventDefault();
        $.ajax({
            type: 'POST',
            url: '/api/upload-image',
            data: new FormData(this),
            contentType: false,
            cache: false,
            processData:false,
            beforeSend: function(){
                $('.submit-input').attr("disabled","disabled");
            },
            success: function(response){ //console.log(response);
                $(".submit-input").removeAttr("disabled");
            }
        });
    });
});
</script>

バックエンドノード

バックエンドでは、multerを使用してファイルを管理し、aws-sdkドキュメントに従ってs3にアップロードします。

var express = require('express');

const router = express.Router();

const AWS = require('aws-sdk');

const fs = require('fs');

//multer
const multer = require('multer')
var storage = multer.diskStorage({
    destination: function (req, file, cb) {
      cb(null, '/tmp/')
    },
    filename: function (req, file, cb) {
      cb(null, file.fieldname + '-' + Date.now())
    }
  })
const upload = multer({ storage: storage })

router.post('/api/upload-image', upload.single('image'), async (req, res) => {

  var file = req.file;

  AWS.config.update({
    accessKeyId: process.env.AWS_PUBLIC,
    secretAccessKey: process.env.AWS_SECRET,
    region: process.env.AWS_REGION
});

var re = /(?:\.([^.]+))?$/;
var ext = re.exec(file.originalname)[1]

const uniqueKey = 'testDir/'+uuidv4()+'.'+ext;

var buffer = fs.readFileSync(file.path, null)

let params = {
    Bucket: process.env.AWS_S3_BUCKET,
    Key: uniqueKey,
    Body: buffer,
    ContentType: file.mimetype
};

let uploadPromise = await new AWS.S3().putObject(params).promise();

  return res.status(201).json({});

  });

これはすべてうまく機能し、バックエンドがファイルを受信し、コンソールでこれを印刷でき(名前、mimeタイプ、サイズなどを確認できます)、ファイルはs3バケットにアップロードされます。しかし、ファイルは読み取り不能(おそらく破損している)であり、私はこれを見ることができません。読み取れないファイルのサイズは元のファイルと同じです。(画像ファイルがない場合はすべて正しく見えます)。

パブリックディレクトリからファイルをs3にアップロードしようとしましたが、すべて正常に機能します。したがって、エラーはjqueryのアップロードとバックエンドの取得の間にあると思います。

ニコラペス

AWS APIGatewayを通過するmultipart / form-dataを有効にする必要があります。このガイドに従って解決済みhttps://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-payload-encodings-configure-with-console.html

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

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

編集
0

コメントを追加

0

関連記事

破損したjarファイル

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

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

PHPWord破損したファイル?

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

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

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

AWSS3の最大ファイルとアップロードサイズ

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

一度に多数のファイルをAWSS3にアップロードします

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

javascriptcreateObjectURL破損したファイル

アップロード中にファイルを自動的に公開するAWSS3コマンド

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

入力フィールドなしでローカル画像ファイルをawss3にアップロードします

NPOI破損したファイル

AWSS3が0Bファイルをアップロード-node.js

Angular8からAWSS3にファイルをアップロードする方法

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

PHPlaravelファイルをAWSS3バケットに直接アップロードする

Django:CSVファイルをAWSS3にアップロードする

GSUtil cpmoethod破損したファイル

破損したExcelファイル

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

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

dioを使用すると、Azureにアップロードされたファイルが破損します

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

ReactJsを使用して大きなファイル(ビデオ)をnodejsサーバーとawss3にアップロードします

AWSSDKを介してAWSS3バケットからファイルをダウンロードすると、ファイルが破損します

TOP 一覧

  1. 1

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

  2. 2

    Railsで宝石のレイアウトを使用するにはどうすればよいですか?

  3. 3

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

  4. 4

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

  5. 5

    アンドロイド9 - キーストア例外android.os.ServiceSpecificException

  6. 6

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

  7. 7

    CSSのみを使用して三角形のアニメーションを作成する方法

  8. 8

    Google Playストア:アプリページにリーダーボードと実績のアイコン/バッジが表示されない

  9. 9

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

  10. 10

    PyCharmリモートインタープリターはプロジェクトタブにサイトパッケージのコンテンツを表示しません

  11. 11

    Windows 7では、一部のプログラムは「ビジュアルテーマを無効にする」レジストリ設定を行いませんか?

  12. 12

    Get-ADGroupMember:このリクエストのサイズ制限を超えました

  13. 13

    Pyusb can't find a device while libusb can

  14. 14

    MySQLでJSON_LENGTHとJSON_EXTRACTを組み合わせる方法は?

  15. 15

    Postmanを使用してファイル付きの(ネストされた)jsonオブジェクトを送信する

  16. 16

    Swiftのブロックのパラメーターに関するドキュメントのマークアップ形式は何ですか?

  17. 17

    Reactでclsxを使用する方法

  18. 18

    追加後、ブートストラップマルチセレクトがテーブルで機能しない

  19. 19

    MongoDB Compass: How to select Distinct Values of a Field

  20. 20

    「埋め込みブラウザのOAuthログイン」を有効にしてコールバックURLを指定した後でも、Facebookのコールバックエラーが発生する

  21. 21

    複数行ヘッダーのJTableヘッダーテキストの折り返し(カスタムTableCellRenderer)

ホットタグ

アーカイブ