使用 express-fileupload 上传文件

9 file-upload node.js express

我正在尝试使用 express-fileupload 上传文件,但没有运气让它正常工作。我可以让文件(在本例中为图像)“上传”,因为我可以让控制台显示使用正确文件夹上传的图像。

启动文件

router.get('/upload', function(req, res) {
    res.render('upload');
});

router.post('/upload', function(req, res) {
    // The name of the input field (i.e. "sampleFile") is used to retrieve the uploaded file 
  let startup_image = req.files.image;

  // Use the mv() method to place the file somewhere on your server 
  startup_image.mv('/images' , function(err) {
      if (err) {
          console.log(err);
      }
  });
});
Run Code Online (Sandbox Code Playgroud)

然后我的 html 表单是

router.get('/upload', function(req, res) {
    res.render('upload');
});

router.post('/upload', function(req, res) {
    // The name of the input field (i.e. "sampleFile") is used to retrieve the uploaded file 
  let startup_image = req.files.image;

  // Use the mv() method to place the file somewhere on your server 
  startup_image.mv('/images' , function(err) {
      if (err) {
          console.log(err);
      }
  });
});
Run Code Online (Sandbox Code Playgroud)

小智 7

您指向文件所在的目录,但没有为其指定文件名。我会说让用户决定客户端的文件名并将其添加到路径中。

<input name="userFileName" type="text">//userFilename Here</input>
Run Code Online (Sandbox Code Playgroud)
var myFILENAME = req.body.userFilename 
startup_image.mv('/images/'+myFILENAME+'.jpg', ..) //myFILENAME needs to be added here
Run Code Online (Sandbox Code Playgroud)

另请参阅有关如何使用 express-fileupload 上传文件的完整示例

更新

我找到了您需要添加__dirname到这一行的问题的解决方案,这将使程序知道您的source代码的当前目录。

startup_image.mv(__dirname + '/images' , function(err) {..
Run Code Online (Sandbox Code Playgroud)

更新 2

这是我的源代码,如果你愿意,你可以试试这个。

我的 HTML

startup_image.mv(__dirname + '/images' , function(err) {..
Run Code Online (Sandbox Code Playgroud)

我的主要来源

var express = require("express);
var app = express();
const fileUpload = require('express-fileupload');
//npm install ejs, express, express-fileupload

//middleware
app.use(express.static(__dirname));
app.set('view engine', 'ejs');
app.use(fileUpload());

app.get('/inputFile', function(req, res){
  res.render('inputt');
});

app.post('/upload', function(req, res) {
  // The name of the input field (i.e. "sampleFile") is used to retrieve the uploaded file
   var startup_image = req.files.foo;
   var fileName = req.body.fileName;
   // Use the mv() method to place the file somewhere on your server
   startup_image.mv(__dirname + '/images/' + fileName + '.jpg' , function(err) {
     if(err){
       console.log(err);
     }else{
    console.log("uploaded");
}
   });
 });

app.listen(7777);
Run Code Online (Sandbox Code Playgroud)