当前位置: 首页 > 面试题库 >

如何使用Express Node.js上传图像文件并显示

终祯
2023-03-14
问题内容

我已经使用以下代码:

fileupload.html

<html>
<head>
<title>File Uploading Form</title>
</head>
<body>
<h3>File Upload:</h3>
Select a file to upload: <br />
<form action="http://127.0.0.1:8081/file_upload" method="POST" enctype="multipart/form-data">
<input type="file" name="file" size="50" />
<br />
<input type="submit" value="Upload File" />
</form>
</body>
</html>

fileupload.js:

var express = require('express');
var app = express();
var fs = require("fs");

var bodyParser = require('body-parser');
var multer  = require('multer');

//console.log(multer);

app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }));
app.use(multer({ dest: '/tmp/'}));

app.get('/fileupload.html', function (req, res) {
   res.sendFile( __dirname + "/" + "fileupload.html" );
})

app.post('/file_upload', function (req, res) {

   console.log(req.files.file.name);
   console.log(req.files.file.path);
   console.log(req.files.file.type);

   var file = __dirname + "/" + req.files.file.name;
   fs.readFile( req.files.file.path, function (err, data) {
        fs.writeFile(file, data, function (err) {
         if( err ){
              console.log( err );
         }else{
               response = {
                   message:'File uploaded successfully',
                   filename:req.files.file.name
              };
          }
          console.log( response );
          res.end( JSON.stringify( response ) );
       });
   });
})

var server = app.listen(8081, function () {
  var host = server.address().address
  var port = server.address().port

  console.log("Example app listening at http://%s:%s", host, port)
})

我已经使用以上这些代码进行文件上传,但是在终端中使用节点fileupload.js执行时,出现类型错误 TypeError('app.use() requires middleware functions');

任何人都可以帮助解决此问题。


问题答案:

您正在尝试使用multer的旧API。它改变了一段时间,请参阅文档以获取更多信息。

在您上载单个文件的特定情况下,您将删除该app.use(multer({ ... }))行,而使用.single()req.file一样:

var upload = multer({ dest: '/tmp/'});

// File input field name is simply 'file'
app.post('/file_upload', upload.single('file'), function(req, res) {
  var file = __dirname + '/' + req.file.filename;
  fs.rename(req.file.path, file, function(err) {
    if (err) {
      console.log(err);
      res.send(500);
    } else {
      res.json({
        message: 'File uploaded successfully',
        filename: req.file.filename
      });
    }
  });
});


 类似资料:
  • 问题内容: 我正在使用Chrome驱动程序使用nightwatch.js运行前端测试。我需要测试图像上传是否正常工作,大概是通过提供的文件输入来进行的,因为在成功发布后会运行回调。 我知道可以使用Selenium Web驱动程序的sendKeys方法来完成。 您如何使用javascript和nightwatch.js完成此操作?您可以访问Selenium Webdriver或与其相关的界面吗? 问

  • 我有一个巨大的问题显示一个上传的图片在Spring引导,问题是第一次我上传它,路径是完美的,一切都很好,但图像不显示,当我重新启动服务器图像显示。 我认为这是因为当启动项目时,它编译成一个.jar而没有映像,所以在重新启动项目之前,映像并不真实存在。 我不知道如何解决这个问题,不确定是否可能。

  • 我正在使用JavaFX,在那里我编写了一个包含的代码,通过我想在我的场景上显示图像,但它不起作用。图像不显示。 当我使用它还显示一个错误。虽然我70%的编码已经完成,但我只是坚持在现场显示图像(不上传)。 以下是我正在使用的代码: 所以,我需要的是通过单击按钮并选择图像来显示我的场景中的图像。

  • 问题内容: 我使用以下示例,它可以完美运行,但是我想同时上传多张图片。 http://jsfiddle.net/kkhxsgLu/2/ 谢谢您的帮助,我从angularjs开始 问题答案: 解: http://jsfiddle.net/orion514/kkhxsgLu/136/ :)

  • 问题内容: 我有一个图像,我想使用Volley库将该图像上传到我的Web服务,问题是我正在寻找一种方法,但仍然没有找到。 我找到了,但是对我不起作用:http : //develop-for- android.blogspot.com.br/2014/01/using-volley-in-your- application.html 我怎样才能做到这一点 ? 我正在尝试这个。 问题答案: 我对排球

  • 我写了一个代码,我在GridView中显示图像,但现在我想在每个图像的底部显示文本。 我想这样展示我的网格: 但是像这样[还想为图像显示文本]: main.xml: