NodeJS 图像上传功能在部署的Heroku应用程序上不工作,但在Localhost上工作?

wz3gfoph  于 2022-12-12  发布在  Node.js
关注(0)|答案(1)|浏览(110)

所以我创建了我的第一个大项目: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)?

k2arahey

k2arahey1#

Heroku不适合永久存储数据,上传的图片会在一段时间后(当测功器重新启动时)被删除read this
我建议使用cloudinaryAWS S3等第三方对象存储服务

相关问题