我已经使用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;
答案 0 :(得分:1)
啊哈!
所以我从第3行的数据中删除了mime类型,这样只有文件数据仍然存在但是pdf文件没有以图像开头的mime类型,所以它没有被我的正则表达式拾取。它实际上是application/pdf
我发现更好的方法是删除mime类型而不管文件类型。将第三行替换为:
var fileWithoutMimeType = file.match( /,(.*)$/ )[ 1 ];
var buf = new Buffer( fileWithoutMimeType, 'base64' );