У меня проблема с Appengine (GCP) и загрузкой файлов через Multer...
Я хотел бы сохранить в своей БД изображение base64 (независимо от причины). Для этого я пытаюсь загрузить это изображение на /tmp (видимо для записи), а затем закодировать его в 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/'?
Судя по приведенному выше коду, похоже, что вы используете относительный путь вместо абсолютного. Таким образом, на самом деле он не попадает в правильный каталог tmp, а вместо этого создает новый каталог tmp в корне вашего проекта.
Будет ли работать, если сменить
'tmp/'на'/tmp/'?