2017-11-24 5 views
0

S3にPDFファイルをアップロードする際に問題があります。Node.jsでaws-sdkを使用してPDF文書を読み込めません

PDFkitを使用してpdfファイルを作成してローカルに保存するのに問題はありません(私はブラウザで見ることができます)。

私のS3ストレージにアップロードしようとすると、このエラーが発生しますPDFドキュメントを読み込めませんでした。私のブラウザでpdfを開くとき。あなたはそれをチェックアウトすることができます https://s3.us-east-2.amazonaws.com/pdf-twitter-bucket/twitter/HvkH98YA0p.pdf

 fs.readFile('../pdf/' + fileName, 'utf8', function (err, contents) { 
      const buf = new Buffer(contents, 'base64'); 
      // define params 
      const params = { 
      Bucket: 'pdf-twitter-bucket', 
      Key: 'twitter/' + fileName, 
      Body: buf, 
      ContentType: 'application/pdf', 
      ACL: 'public-read' 
      }; 

      s3bucket.upload(params, function (err) { 
      if (err) { 
       console.log('error in callback'); 
       console.log(err); 
      } 
      res.end(
       'https://s3.us-east-2.amazonaws.com/pdf-twitter-bucket/twitter/' + 
       fileName 
      ); // send the link to s3 
      }); 
     }); 

を私は多くのオプションを試してみた: 1)Buffer 2を使用してBuffeerではなくを使用して)私は.txtファイル 3をアップロードする場合は問題ありません)私も渡して試してみました

:私は小さな研究を行い、同様の問題を見つけたこの質問を書き込む前にBody

として文字列

残念ながら、それは

答えて

1

私はS3のアップロードと同じ問題を持っていた...ずっと私を助けていませんでした。私はPDFを開くことができませんでした。サイズは数KBではなく数バイトに過ぎませんでした。問題は、書き込みストリームが完了するのを待たずに済んだことだと思います。

これは今私の作品:

document.pipe(fs.createWriteStream(fileName)); 
 
document.end(); 
 
document.on('end', function() { 
 
    fs.readFile(fileName, function (err, data) { 
 
    if (err) { 
 
     console.log(err); 
 
    } 
 
    s3.upload({ 
 
     Bucket: s3Bucket, 
 
     Key: fileName, 
 
     Body: data, 
 
     ContentType: 'application/pdf', 
 
     acl: 'private', 
 
     contentDisposition: 'attachment', 
 
     ServerSideEncryption: 'AES256' 
 
    }, function(err, data) { 
 
     if (err) { 
 
     console.log(err); 
 
     } 
 
    }); 
 
    }); 
 
});

は、この情報がお役に立てば幸い!

関連する問題