Appengine-上传文件时,tmp /文件系统错误

时间:2019-01-29 19:13:50

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

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

我想在我的数据库中存储base64映像(无论原因如何)。为此,我尝试将该图像上传到/tmpapparently writable),然后将其编码为base64,然后将其存储到DB中。

在本地,它像超级按钮一样工作,但是一旦部署,它就不会: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简化事情...

1 个答案:

答案 0 :(得分:0)

如果您将'tmp/'更改为'/tmp/'可以正常工作吗?

根据以上代码,您似乎正在使用相对路径而不是绝对路径。因此,实际上并没有找到正确的tmp目录,而是在项目根目录中创建了一个新的tmp目录。