如何使用express nodejs上传图像文件并显示 [英] how to upload image file and display using express nodejs

查看:22
本文介绍了如何使用express nodejs上传图像文件并显示的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用了以下代码:

文件上传.html

<头><title>文件上传表单</title><身体><h3>文件上传:</h3>选择要上传的文件:<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="上传文件"/></表单>

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);控制台日志(req.files.file.path);控制台日志(req.files.file.type);var file = __dirname + "/" + req.files.file.name;fs.readFile( req.files.file.path, function (err, data) {fs.writeFile(文件,数据,函数(错误){如果(错误){控制台日志(错误);}别的{响应 = {message:'文件上传成功',文件名:req.files.file.name};}控制台日志(响应);res.end(JSON.stringify(响应));});});})var server = app.listen(8081, function () {var host = server.address().addressvar port = server.address().portconsole.log("示例应用程序在 http://%s:%s 侦听",主机,端口)})

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

谁能帮忙解决这个问题.

解决方案

您正在尝试使用 multer 的旧 API.不久前它发生了变化,有关详细信息,请参阅文档.

在您上传单个文件的特定情况下,您将删除 app.use(multer({ ... })) 行,而是使用 .single()code> 和 req.file 像:

var upload = multer({ dest: '/tmp/'});//文件输入字段名称只是文件"app.post('/file_upload', upload.single('file'), function(req, res) {var file = __dirname + '/' + req.file.filename;fs.rename(req.file.path, file, function(err) {如果(错误){控制台日志(错误);res.send(500);} 别的 {res.json({message: '文件上传成功',文件名:req.file.filename});}});});

I have used following code :

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)
})

I have used these above code for file uploading But when excute using node fileupload.js in terminal i am getting type error TypeError('app.use() requires middleware functions');

Can any one help to resolved this problem.

解决方案

You're trying to use multer's old API. It changed awhile back, see the documentation for more information.

In your particular case of uploading a single file, you would remove the app.use(multer({ ... })) line and instead use .single() and req.file like:

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
      });
    }
  });
});

这篇关于如何使用express nodejs上传图像文件并显示的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆