上传到s3后无法查看PDF。上传图片工作正常(NodeJS)

时间:2017-11-16 03:29:33

标签: javascript node.js amazon-s3 aws-sdk

我已经使用aws-sdk上传图片已经有一段时间没有任何问题,但最近才需要上传pdf。我以为我可以使用相同的功能

上传时看起来我得到了成功的回复,但当我尝试打开PDF时,我得到Failed to load PDF document.

我尝试过使用putObject而不是uploadObject而没有运气。

以下是我目前使用的代码

var deferred = q.defer();
var s3 = new AWS.S3();
var buf = new Buffer( file.replace( /^data:image\/\w+;base64,/, '' ), 'base64' );
var params = { 
    Bucket: config.bucket, 
    Key: config.environment + '/' + fileName, 
    ContentType: fileType, 
    Body: buf 
};


s3.upload( params, function( err, data ) {
    err ? console.log( err ) : console.log( data );
    deferred.resolve( data );
} );
return deferred.promise;

1 个答案:

答案 0 :(得分:1)

啊哈!

所以我从第3行的数据中删除了mime类型,这样只有文件数据仍然存在但是pdf文件没有以图像开头的mime类型,所以它没有被我的正则表达式拾取。它实际上是application/pdf

我发现更好的方法是删除mime类型而不管文件类型。将第三行替换为:

var fileWithoutMimeType = file.match( /,(.*)$/ )[ 1 ];
var buf = new Buffer( fileWithoutMimeType, 'base64' );