因此,您可以使用Content-Disposition: attachment
Content-Disposition: inline
是默认设置,应该在浏览器中显示,它实际上可以处理大多数文件,如PNG,JPG等。
但出于某种原因,从S3生成预先签名的URL时,即使我没有使用内容处置:附件标题,PDF文件也会一直强制下载。
我希望能够在浏览器允许的情况下在浏览器中打开PDF
我正在使用来自S3客户端http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURLJavaSDK.html
的预先签名的URL生成调用答案 0 :(得分:4)
检查文件的元数据,并从该文件中删除 Content-Disposition 条目。并根据文件类型设置内容类型。
喜欢 文本文件内容类型 =' text / plain'
image png 内容类型 =' image / png'
pdf 内容类型 = application / pdf
pdfxml 内容类型 = application / vnd.adobe.pdfxml
如果您的文件内容类型是二进制/八位字节流,那么它将下载而不是显示。
由于
答案 1 :(得分:4)
您必须按如下所示设置putObject参数以查看pdf而不是下载。
params = {
Bucket: process.env.S3_BUCKET,
Key: <fileName>,
Body: <fileContent>,
ContentDisposition:"inline",
ContentType:"application/pdf"
};
答案 2 :(得分:0)
您还需要正确设置Content-Type
。浏览器将检查内容类型值,如果它不知道如何显示它将永远只是下载文件。
答案 3 :(得分:0)
您需要同时提供这两个元数据才能查看文件,而不是下载文件:
Content-Disposition: attachment
Content-Type: application/pdf