如何上传,保存和显示带节点和表达的文件

时间:2015-07-14 08:09:48

标签: javascript node.js express

我是nodejs的新手,我正在尝试使用node和express创建表单,可以上传保存并显示图像或文件。 我有适用的app.post信息。

我正在尝试一些东西,但它没有用。 好吧,我想我错过了一些东西,但我真的不知道我尝试了多少答案,但没有什么对我有用。 希望有人可以帮助我。

先谢谢。

有我的代码

var express = require('express');
var bodyparser = require('body-parser');
var fs = require('fs');
var Busboy = require('busboy');
var path = require('path');

var app = express();

app.use(bodyparser());

app.get('/information', function(req,res) {
  var html = '<form action="/information" method="post">' +
           'Enter your name:' +
           '<input type="text" name="userName" placeholder="..." />' +
           '<br>' +
           '<button type="submit">Submit</button>' +
        '</form>';               
res.send(html);
});

app.post('/information', function(req, res){
  var userName = req.body.userName;
  var html = 'Hello: ' + userName + '.<br>' +
         '<a href="/information">Try again.</a>';
  res.send(html);
}); 

var frm = '<form action="/file" method="POST" enctype="multipart/form-    data">' + '<br/>'+
        '<input type="file" name="uploadFile" />' + '<br/>' + 
        '<input type="submit" />' + '</form>';

app.get('/file',function(req,res){
    res.send(frm);
});

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

    fs.readFile(req.body.uploadFile.path , function (err, data) {
        var fileName = req.body.uploadFile.name;
        if(!fileName){
            console.log("There was an error")
            res.redirect("/file");
            res.send();
        } else {

          var newPath = "/uploads/" + fileName;

          /// write file to uploads folder
          fs.writeFile(newPath, data, function (err) {

            /// let's see it
            res.redirect("/uploads/" + fileName);
          });
        }
    });
});
/// Show files
app.get('/uploads/:file', function (req, res){
     file = req.params.file;
    var img = fs.readFileSync("/uploads/" + file);
    res.send(img, 'binary');
});app.listen(process.env.PORT || 3003);

1 个答案:

答案 0 :(得分:0)

这里有一些问题: