我成功地将图像写入Heroku,但我无法弄清楚如何访问它。
function saveImage(req,res) {
const roomID = req.params.id;
pool.query('SELECT * FROM ' + roomTable + ' WHERE id = $1', [ roomID ],function(err, result) {
if(err){
res.json(
{ "status": err.message }
)
} else {
const selectedRoom = JSON.parse(JSON.stringify(result.rows[0]));
if(selectedRoom.image_url === null){
const image = req.body.image_data;
const fileName = uuid.v4();
const filePath = __dirname + "/image/" + fileName + ".png"
const base64Data = image.replace(/^data:image\/png;base64,/, "");
fs.existsSync("image") || fs.mkdirSync("image");
fs.writeFile(filePath, new Buffer(base64Data, "base64"), function(err) {
if(err) {
res.json(
{ "status": err.message }
)
}else{
pool.query('UPDATE '+ roomTable +' SET image_url = $1 WHERE id = $2;', [filePath, roomID] ,function(err, result) {
if(err){
res.json(
{ "status": err.message }
)
} else {
console.info("The file was saved!");
res.json({
"status": "ok",
"path": filePath
});
}
})
}});
}else {
res.json({
"status": "error",
"message": "The room has an image already."
});
}
}
})
}
我的服务器在heroku上运行。如果我发送请求,我会收到正确的回复。
{
"status": "ok",
"path": "/app/image/04efd85d-e9db-4965-b15f-3840dbd344f3.png"
}
所以,之后图像写到了heroku。
但如果我想访问它,请访问网址:
https://myurl/app/image/04efd85d-e9db-4965-b15f-3840dbd344f3.png
或者,在那个网址中:
https://myurl/image/04efd85d-e9db-4965-b15f-3840dbd344f3.png
我也尝试提供它:
app.use('/image', express.static('image'));
app.use(__dirname + '/image', express.static('image'));
所以问题是,我怎样才能在heroku中访问我的url。我不想使用Amazon S3。