Javascript Multer没有上传文件

Javascript Multer没有上传文件,javascript,node.js,file,file-upload,multer,Javascript,Node.js,File,File Upload,Multer,我试图使用multer将一个文件从客户端的html表单上传到服务器端,multer模块在服务器端处理该文件 这里的问题是一切正常,因为我从服务器得到了200OK响应,但是文件应该上传到我的文件系统,我看不到它 这是我的html表单 <template> <div id="app"> <form action="http://localhost:3000/upload" method="post" enctype="multipart/form-data"

我试图使用multer将一个文件从客户端的html表单上传到服务器端,multer模块在服务器端处理该文件

这里的问题是一切正常,因为我从服务器得到了200OK响应,但是文件应该上传到我的文件系统,我看不到它

这是我的html表单

<template>
  <div id="app">
    <form action="http://localhost:3000/upload" method="post" enctype="multipart/form-data">
      <h2>Select a file</h2>
      <input name="curriculum" id="inputVal" type="file">
      <button type="submit">Send</button>
    </form>
  </div>
</template>
module.exports=路由器

更新

我在npm multer网站上更改了我的解决方案库(服务器端)

module.exports=路由器


谢谢你的帮助

您没有指定要上载的文件。输入
输入的名称

router.post('/upload', upload.single('curriculum'), function (req, res, next) {
    if(err) {
      console.log(err);
      return res.status(404).send("a error ocurred");
    }
    console.log(req.file);
    res.status(200).send("file uploaded");
});
同样在文件名中,确保文件以扩展名结尾,例如
.png
.jpeg
,否则您将看到一堆没有任何意义的字节码

您可以使用
file.originalname

cb(null, file.originalname)
或者您可以显式地添加它

callback(null, file.fieldname + '-' + Date.now() + '.png')
您可能需要删除
回调的第三个参数(null,Date.now()+file,callback)
,它是
回调
,因为它可能会对程序进行调试,并将
+文件
更改为类似
+file.originalname
的内容,因为
文件
是一个对象,计算机可能无法将对象与文件名联系起来

更新

主节点

var express = require('express')
var multer  = require('multer')
var app = express()

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, __dirname + '/uploads')      //you tell where to upload the files,
  },
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now() + '.png')
  }
})

var upload = multer({storage: storage,
    onFileUploadStart: function (file) {
      console.log(file.originalname + ' is starting ...')
    },
});

app.set('view engine', 'ejs');

app.get('/', function(req, res, next){    
    res.render('mult');  //our html document
})

app.post('/profile', upload.single('avatar'), function (req, res, next) {
  // req.file is the `avatar` file
  console.log(req.file);
  return false;
})
HTML表单

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <form accept="image/x-png,image/gif,image/jpeg" enctype="multipart/form-data" action="/profile" method="post">
      <input type="file" name="avatar" value="">
      <input type="submit" name="" value="ssss">
    </form>
  </body>
</html>

对于那些对multer没有将文件上传到目标文件夹有问题的人,我发现使用绝对路径而不是相对路径很有用

类似这样的内容(到节点js根目录的绝对路径)
公共/图片/图片

优于(相对路径)
../public/images/pics

或(相对路径)
/公众/图片/图片


这对我很有效

您是否已将相应的读/写权限设置到您尝试上载文件的目标文件夹?是的,我没有收到任何错误,通常我会获得CORS,但我允许它出现在我的应用程序文件中,我不知道为什么不起作用。请尝试在文件后添加
/
作为
回调(null,../files/);
并查看它是否正常工作?仍然没有:/在传递请求上载之前,您能否尝试检查
req.file.courseum
是否包含该文件检查我的更新,这些代码对我来说工作正常,您可能应该对
upload
变量@costacosta进行一些更改
var express = require('express')
var multer  = require('multer')
var app = express()

var storage = multer.diskStorage({
  destination: function (req, file, cb) {
    cb(null, __dirname + '/uploads')      //you tell where to upload the files,
  },
  filename: function (req, file, cb) {
    cb(null, file.fieldname + '-' + Date.now() + '.png')
  }
})

var upload = multer({storage: storage,
    onFileUploadStart: function (file) {
      console.log(file.originalname + ' is starting ...')
    },
});

app.set('view engine', 'ejs');

app.get('/', function(req, res, next){    
    res.render('mult');  //our html document
})

app.post('/profile', upload.single('avatar'), function (req, res, next) {
  // req.file is the `avatar` file
  console.log(req.file);
  return false;
})
<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <form accept="image/x-png,image/gif,image/jpeg" enctype="multipart/form-data" action="/profile" method="post">
      <input type="file" name="avatar" value="">
      <input type="submit" name="" value="ssss">
    </form>
  </body>
</html>