google-app-engine - Appengine - 上传文件时出现 tmp/文件系统错误
问题描述
我在使用 Appengine (GCP) 和通过 Multer 上传文件时遇到问题...
我想在我的数据库中存储一个 base64 图像(不管是什么原因)。为此,我尝试将此图像上传到/tmp
(显然是可写的),然后将其编码为 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`)
})
我不想使用谷歌云存储来简化事情......
解决方案
如果您更改'tmp/'
为 ,它是否有效'/tmp/'
?
根据上面的代码,看起来您使用的是相对路径而不是绝对路径。所以它实际上并没有找到正确的tmp
目录,而是tmp
在你的项目根目录中创建了一个新目录。
推荐阅读
- database - spark.catalog.tableExists("newDb.newTable") 方法抛出 NoSuchDatabaseException 而不是返回 false(“newDb”不存在)
- javascript - 角度单元测试:表格标题单元格内组件冲突的垫表问题
- c++ - 为什么 std::istringstream 只能在这里使用构造函数?
- node.js - 为什么我一直使用 mailchimp API 获取 http 状态代码 400
- weblogic -
ATG servlet 异常失败 - javascript - 有没有办法使用 Javascript 在文本区域中返回拼写错误的单词?
- amazon-s3 - S3 - Cloudtrail 日志无法记录上传对象事件
- javascript - 链接重定向到路由,但不刷新组件
- reactjs - 同步 useEffect 请求
- angular - 如何创建一个接口来以角度制作http响应类型?