我正在下载网页,然后使用以下代码写入名为 thisArticle.html
的文件。
var file = fs.createWriteStream("thisArticle.html");
var request = http.get(req.body.url, response => response.pipe(file) );
之后我尝试读取文件并上传到 S3,这是我编写的代码:
fs.readFile('thisArticle.html', 'utf8', function(err, html){
if (err) {
console.log(err + "");
throw err;
}
var pathToSave = 'articles/ ' + req.body.title +'.html';
var s3bucket = new AWS.S3({ params: { Bucket: 'all-articles' } });
s3bucket.createBucket(function () {
var params = {
Key: pathToSave,
Body: html,
ACL: 'public-read'
};
s3bucket.upload(params, function (err, data) {
fs.unlink("thisArticle.html", function (err) {
console.error(err);
});
if (err) {
console.log('ERROR MSG: ', err);
res.status(500).send(err);
} else {
console.log(data.Location);
}
// ..., more code below
});
});
});
现在,我面临两个问题:
文件正在上传,但有 0 字节(空) 当我尝试通过 S3 手动上传时,仪表板已成功上传,但当我尝试在浏览器中加载 URL 时,它会下载 HTML 文件而不是提供它。 如果我遗漏了什么,有什么指南吗?
最佳答案
将 ContentType 设置为“text/html”。
s3 = boto3.client("s3")
s3.put_object(
Bucket=s3_bucket,
Key=s3_key,
Body=html_string,
CacheControl="max-age=0,no-cache,no-store,must-revalidate",
ContentType="text/html",
ACL="public-read"
)
关于javascript - 将 HTML 文件上传到 AWS S3,然后提供它而不是下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45889262/