我正在创建一个个人网站,将允许我创建和保存文件到我的亚马逊S3桶。
设置如下:我有一个表单,其中包含一个文件名的文本输入,以及一个文件正文的文本区域。
思想:能够将文件保存为文件名和扩展名(即:如果文件名为“index.html”,它将在我的桶中保存为html对象)。它将保存任何输入到文本区域的内容,作为文件的正文内容。
错误: 1) POST heroku-url 500 (内部服务器错误) 2)拒绝加载字体的数据:/woff;base64 64,,因为它违反了以下内容安全策略指令:"default-src 'self'“。请注意,“字体-src”没有显式设置,因此“default-src”用作回退。
注意:我使用Heroku,我使用'heroku config:set‘命令来存储我的AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,并存储我的桶名(S3_BUCKET)。
代码:
<h1>New File</h1>
<hr>
<form method="POST" action="/save-as">
<input type="text" id="file_input" name="file_input" placeholder="File Name"><br>
<textarea id="file_body" name="file_body"></textarea>
<hr>
<h2>Save changes</h2>
<input id="submit" type="submit" value="Save">
</form>
const express = require('express');
const aws = require('aws-sdk');
var port = process.env.PORT || 3000;
const app = express();
app.set('views', './views');
app.use(express.static('./public'));
app.engine('html', require('ejs').renderFile);
app.listen(port);
console.log("App is listening on port: " + port);
aws.config.region = 'us-east-2';
const S3_BUCKET = process.env.S3_BUCKET;
app.get('/', (req,res) => res.render('index.html'));
app.post('/save-as', (req, res) => {
const s3 = new aws.S3();
const fileName = req.query['file_name'];
const fileBody = req.query['file_body'];
const s3Params = {
Bucket: S3_BUCKET,
Key: fileName,
Body: fileBody
}
s3.putObject(s3Params, (err,data) => {
if(err) throw err;
res.writeHead(200, {'Content-Type':'text/plain'});
res.write("Successful!!");
res.end();
});
});
发布于 2017-09-20 20:58:29
完全脱离了解决错误的主题,但是您可以将其写为console.log(App is listening on port: ${port}) --这些是回退,而不是对象文字的引号,所以您不需要使用连接。
https://stackoverflow.com/questions/46220179
复制相似问题