【问题标题】:node.js on heroku keeps losing image after a whileheroku上的node.js在一段时间后不断丢失图像
【发布时间】:2023-03-03 00:53:02
【问题描述】:

我的 Node.js 应用在一段时间后不断丢失静态图像(.jpg、.png...)。它不会在我的本地 win10 桌面甚至 heroku 上丢失任何图像,我的 webpack bundle.js 是从相同的静态路由(/pub 或 /dist)提供的,它们工作得很好。不知何故,只有静态图像,当我第一次上传时,它们在最初的几分钟内还不错,然后过了一会儿,它就消失了。我使用 express.static 进行静态路由声明,使用 multer 进行文件上传。用于测试的文件都是小写.jpg(因为我听说heroku随意更改所有大写扩展名)所以我不知道是什么导致了问题。

服务器代码:

const storage = multer.diskStorage({
  destination: (req,file,cb)=>{
    cb(null,'pub/')
  },
  filename: (req,file,cb)=>{
    cb(null,Date.now() + file.originalname)
  }
})
const upload = multer({storage:storage})

//access to static files
app.use('/pub', express.static(pubDir))
app.use('/dist', express.static(dstDir))

app.post('/modwimg',upload.any(),(req,res,next)=>{
//here I connect filename from files array to db
})

如果有客户端请求,服务器会从数据库中获取文件名并将“/pub/”放在它前面。它在我的本地机器和heroku上都可以正常工作。只是heroku上的图像会在一段时间后消失。

【问题讨论】:

    标签: node.js express heroku multer


    【解决方案1】:

    heroku 文件系统是临时的。如果您希望允许用户将文件上传到您的应用程序,则需要使用 S3、数据库 blob 等外部存储或 cloudinary 等托管服务。有关更多信息,请参阅此线程:https://www.reddit.com/r/rails/comments/2k9sq4/heroku_any_files_you_upload_will_not_be_saved/

    【讨论】:

    • 谢谢。此外,您提供的文章读起来也很有趣。由于我还是 Web 开发的新手,我认为我做错了什么,就像我过去所做的一样。我真的没想到 Heroku 会为静态图像设置上限,因为其他静态元素(.json、.js、.html...)都很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-25
    • 2018-12-10
    • 2018-08-04
    • 1970-01-01
    • 2018-10-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多