【发布时间】:2019-10-30 04:40:08
【问题描述】:
我已经将一些 svg 图像上传到 S3 存储桶(我已设置为 public-all)。上传所有 svg 图像后。我得到每个图像的 URL。当我点击这些 URL 时,它只是下载图像我。
还。有谁知道为什么当我在 img 标签中使用这些 Url 时(例如<img src='https://***.s3.***.amazonaws.com/***.svg />`)。它只是显示一个损坏的图像
这是我的 lambda 函数
'use strict'
const aws = require('aws-sdk')
const s3 = new aws.S3()
const { parse } = require('aws-multipart-parser')
const response = (statusCode, data) => ({
statusCode,
headers: {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*'
},
body: JSON.stringify(data)
})
exports.handler = async event => {
const inputData = parse(event, true)
if (inputData.file) {
try {
const params = {
Bucket: ***,
region: ***,
Key: `${inputData.file.filename}`,
Body: inputData.file.content,
ACL: 'public-read'
}
const s3Response = await s3.upload(params).promise()
return response(200, { statusCode: 200, url: s3Response['Location'] })
} catch (error) {
console.log('Error: ', error)
return response(500, {
error: error.message
})
}
} else {
return response(400, {
error: 'Please provide input file.'
})
}
}
【问题讨论】:
-
理想情况下,如果 URL 正确,它不应该被破坏。控制台中是否显示任何错误? @CH L
-
一定是跨站访问问题,查看浏览器日志
-
大部分看起来像是不正确的 mime 类型。您能否检查 S3 上 svg 文件的内容类型)。它应该设置为 image/svg+xml 。
-
我不在电脑前,但当我点击网址时,它只是为我下载图片
-
参考损坏的图像,这是因为 svg 构造不正确。尝试使用不同的 SVG。参考下载而不是查看,设置内容类型应该可以解决这个问题
标签: reactjs amazon-web-services amazon-s3 aws-lambda