javascript - 在 node.js 中移动文件时如何解决路径问题?
问题描述
我正在尝试从 html 表单中获取文件并将其存储在另一个文件夹中。它基本上是云功能,我对 node.js 和 firebase 都是新手,所以不知道我做错了什么。我设法做的是:
const fileMiddleware = require('express-multipart-file-parser');
app.post("/sendMail", (req, res) => {
const {
fieldname,
filename,
encoding,
mimetype,
buffer,
} = req.files[0];
console.log(req.files[0].originalname);
var fs = require('fs')
var oldPath = req.files[0].originalname;
var newPath = '/functions/'+oldPath;
fs.rename(oldPath, newPath, function (err) {
if (err) throw err
console.log('Successfully renamed - AKA moved!')
});
});
每当我尝试移动文件时,都会遇到路径问题。错误如下:
[Error: ENOENT: no such file or directory, rename 'C:\Users\Maisum Abbas\now\functions\sendMail.txt'
> 'C:\functions\sendMail.txt'] {
> errno: -4058,
> code: 'ENOENT',
> syscall: 'rename',
> path: 'C:\\Users\\Maisum Abbas\\now\\functions\\sendMail.txt',
> dest: 'C:\\functions\\sendMail.txt'
> }
此外,这是我想要实际移动文件的路径,但 oldpath 已经像这样设置了。
C:\Users\Maisum Abbas\now\functions\sendMail.txt
解决方案
由于我需要使用电子邮件附加文件,因此会导致路径问题。我用 multer 试了一下,效果很好。我做了什么:
//call libraries here
var storage = multer.diskStorage({
destination: function (req, file, callback) {
callback(null, 'resume/');
},
filename: function (req, file, callback) {
callback(null, file.fieldname + '-' + Date.now());
}
});
var upload = multer({ storage : storage}).single('filetoupload');
app.post("/careerMail", (req, res) => {
const { name } = req.body;
const { email } = req.body;
const { phone } = req.body;
upload(req,res,function(err) {
if(err) {
return res.end("Error uploading file.");
}
});
const dest = 'mymail';
const mailOptions = {
from: email, // Something like: Jane Doe <janedoe@gmail.com>
to: dest,
subject: 'Candidate Application', // email subject
html: `<div>
<strong>From:</strong> ` +
name +
`<br /><br />
<strong>Email:</strong> ` +
email +
`<br /><br />
<strong>Phone:</strong> ` +
phone +
`<br /><br />
</div>
`,// email content in HTML
attachments: [
{
filename: req.files[0].originalname,
content: req.files[0].buffer.toString("base64"),
encoding: "base64"
}
]
and rest of the code...
推荐阅读
- java - 确定数组是否包含重复项
- asp.net - 如何将接口绑定到 Razor 表单
- csv - 使用 Jmeter 测试具有相同列标题的多个 csv 的 1 亿条记录的 API 的合适方法
- reactjs - RSuite Cascader 搜索文本字段不起作用
- c# - 调整窗口大小时,WPF 使拉伸的 TextBlock 收缩
- mysql - 如何在SQL中选择列的增量总和
- windows - 如何在 Windows 上使用 LuaRocks 安装 lua-zlib?
- java - 试图在我的java代码中打印数组
- php - 如何在 PHP 中打印对象数组的一个元素?
- spring - Spring Boot AOP 无法获取注解参数