【问题标题】:Appengine - tmp/ filesytem error when uploading a fileApp Engine - 上传文件时出现 tmp/ 文件系统错误
【发布时间】:2019-02-01 21:18:26
【问题描述】:

我在使用 Appengine (GCP) 和通过 Multer 上传文件时遇到问题...

我想在我的数据库中存储一个 base64 图像(不管是什么原因)。为此,我尝试将此图像上传到/tmp (apparently writable),然后将其编码为base64,然后将其存储到数据库中。

在本地,它就像一个魅力,但一旦部署,它就不会:Error: EROFS: read-only file system, mkdir '/srv/tmp'

你有什么线索吗?下面是我的简化代码。

'use strict'

const express = require('express')
const router = new express.Router()
const multer = require('multer')
const upload = multer({ dest: 'tmp/' })
const fs = require('fs')

// APP DEPENDENCIES
const { saveHousing } = require('../models/housing.js')


/////////////////////////////////////
router.post('/', upload.single('upload'), async (req, res) => {

  var img = fs.readFileSync(req.file.path).toString('base64')
  const housing = { IMG: { MIME: req.file.mimetype, DATA: img } }
  await saveHousing(housing)

  res.redirect(`/app/dashboard`)
})

我不想使用 Google Cloud Storage 来简化事情...

【问题讨论】:

  • 'tmp/'改成'/tmp/'能用吗?
  • 它有效。很简单。非常感谢。有时最简单的事情就是最好的……
  • 不错。我会把这个评论充实起来,作为其他偶然发现这个问题的人的答案

标签: google-app-engine file-upload filesystems multer


【解决方案1】:

'tmp/'改成'/tmp/'能用吗?

根据上面的代码,看起来您使用的是相对路径而不是绝对路径。所以它实际上并没有访问正确的tmp 目录,而是在您的项目根目录中创建了一个新的tmp 目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-02
    • 2020-07-31
    • 1970-01-01
    • 2020-03-24
    • 1970-01-01
    • 2011-02-12
    • 2013-11-25
    相关资源
    最近更新 更多