node.js - express fileupload 包的路径问题
问题描述
当我想将文件上传到“公共”文件夹时遇到问题。当我不使用'./'
. 如果我使用'../'
或'/'
文件不上传到公用文件夹。
**controllers.js**
files.forEach(file => {
file.mv('../public/' + file.name, err => {
if (err) {
log({ err });
return res.redirect('/')
}
log('file uploaded');
})
})
错误: Error: ENOENT: no such file or directory, open 'D:\Users\Antonio\Desktop\public\image4.jpg'
还有这个错误:Express-file-upload: Request is not eligible for file upload!
当我在里面时会发生这种情况controllers/controllers.js
。如果我在里面写这段代码app.js
,我不会遇到任何问题。
解决方案
该file.mv()
方法相对于cwd
当前工作目录路径起作用。
为了让它工作,你需要这样写:
const path = require('path')
const fileName = path.join(__dirname, '../public/', file.name)
file.mv(fileName)
通过这样做,路径将相对于controller.js
文件(而不是相对于cwd
)
推荐阅读
- python - 'pip install' 忽略提供的版本并尝试安装最新版本
- python - 将 API 密钥作为环境变量添加到 Google App Engine 的最佳方法是什么?
- jenkins - 如何通过 MultiJob 插件重试 Phase 作业?
- reactjs - 使用没有缩放的 react-stockcharts 绘制一个矩形以突出显示画布上的图表上的数据
- sql - 在 PostgreSQL 中生成 JSON
- vaadin-flow - Vaadin 20 Gradle 插件:vaadinBuildFrontend 失败并显示“参数'outputDirectory' (%s) 提供的路径不是目录”
- angular - 如何以角度将方法从一个组件调用到另一个组件
- java - Java中char数组的选择排序
- javascript - 改进功能以突出显示所有类型的搜索词 - 反应原生
- visual-studio - 无法下载 Visual Studio 安装程序