javascript - 如何解决在node.js中移动文件时的路径问题?

标签 javascript node.js express google-cloud-functions

我正在尝试从 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 <<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="066c67686362696346616b676f6a2865696b" rel="noreferrer noopener nofollow">[email protected]</a>>
    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...

关于javascript - 如何解决在node.js中移动文件时的路径问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63462133/

相关文章:

node.js - 在 EJS 上打印原始 html 字符串

javascript - 为什么每次点击空链接时我的页面都会被刷新?

javascript - Mongoose -> findOne -> 排序 -> 如果数据库中没有记录

javascript - 在使用 gulp 和 angular.js 构建的网站中,CSS 和 JS 作为 HTML 的副本加载

node.js - Express cookieSession 不填充 req.session

javascript - nodejs 快速响应追加到列表中

javascript - 如何获取输入按钮点击的值?

node.js - Heroku dynos 不共享文件系统

node.js - busboy文件上传错误 "Unexpected end of multipart data"

angularjs - URI 中包含斜杠字符 '/' 的标识符