所以我创建了我的第一个大项目:https://rate-n-write.herokuapp.com/
简而言之,这是一个博客应用程序,用户可以写评论,并与图片沿着发布。
我已经使用firebase作为数据库来存储文章。应用程序在localhost上运行良好。每当我试图在Heroku上上传图像时,我都会收到这个错误
错误出现在以下代码(editor.js)的第8行:
uploadInput.addEventListener('change', () => {
uploadImage(uploadInput, "image");
})
const uploadImage = (uploadFile, uploadType) => {
const [file] = uploadFile.files;
if(file && file.type.includes("image")){
const formdata = new FormData();
formdata.append('image', file);
//Error shows up here in the fetch line
fetch('/upload', {
method: 'post',
body: formdata
}).then(res => res.json())
.then(data => {
if(uploadType == "image"){
addImage(data, file.name);
} else{
bannerPath = `${location.origin}/${data}`;
banner.style.backgroundImage = `url("${bannerPath}")`;
}
})
const change_text = document.getElementById("uploadban");
change_text.innerHTML = " ";
} else{
alert("upload Image only");
}
}
这只是整个editor.js文件的一个片段。
是否因为我试图将文件上载到项目目录?(下面的server.js代码段):
app.post('/upload', (req, res) => {
let file = req.files.image;
let date = new Date();
// image name
let imagename = date.getDate() + date.getTime() + file.name;
// image upload path
let path = 'public/uploads/' + imagename;
// create upload
file.mv(path, (err, result) => {
if(err){
throw err;
} else{
// our image upload path
res.json(`uploads/${imagename}`)
}
})
})
我是否需要使用在线存储服务(如AWS S3)?
1条答案
按热度按时间k2arahey1#
Heroku不适合永久存储数据,上传的图片会在一段时间后(当测功器重新启动时)被删除read this。
我建议使用cloudinary或AWS S3等第三方对象存储服务