繁体   English   中英

使用Express 4.15上传文件不起作用

[英]files upload using express 4.15 not working

我第一次使用Express,在上传文件时遇到了一些问题。 我遵循了许多教程,但没有人工作。 我只有一个空白页,没有文件上传

index1.jade

doctype html
html(lang='en')
head
    title
    meta(charset='UTF-8')
body
    form(role="form", action="/", method="post", enctype="multipart/form-data")
    div(class="form-group")
        label(for="onixfile") Upload ONIX File        
        input(type="file", name="onixfile", id="onixfile")
        input(type="submit")

app.js

 var express = require('express');
    var path = require('path');
    var favicon = require('serve-favicon');
    var logger = require('morgan');
    var cookieParser = require('cookie-parser');
    var bodyParser = require('body-parser');
    var index = require('./routes/index');
    var users = require('./routes/users');
    var multer = require('multer');

    var app = express();
    var multer = require('multer');
    var upload = multer({ dest: './uploads' });
    // view engine setup
    app.set('views', path.join(__dirname, 'views'));
    app.set('view engine', 'jade');

    // uncomment after placing your favicon in /public
    //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
    app.use(logger('dev'));
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({ extended: false }));
    app.use(cookieParser());
    app.use(express.static(path.join(__dirname, 'public')));

    app.use('/', index);
    app.use('/users', users);

    // catch 404 and forward to error handler
    app.use(function(req, res, next) {
      var err = new Error('Not Found');
      err.status = 404;
      next(err);
    });

    // error handler
    app.use(function(err, req, res, next) {
      // set locals, only providing error in development
      res.locals.message = err.message;
      res.locals.error = req.app.get('env') === 'development' ? err : {};

      // render the error page
      res.status(err.status || 500);
      res.render('error');
    });

    module.exports = app;

路线/ index.js

    var express = require('express');
var multer = require('multer');
var router = express.Router();
var upload = multer({ dest: 'uploads/' });
/* GET home page. */
router.get('/', function(req, res) {
  res.render('index1', { title: 'ONIX Validator' });
});

router.post('/upload', upload.single('file'), function(req, res){
    var file = '/' + req.file.filename;
    var fs = require('fs');
    fs.open("./uploads",'r',function(err, fd){
    fs.readFile(file ,function(err, data){
      if(err) throw err;
      fs.writeFile("./uploads/"+req.file.filename, data), function(err) {
        if(err) {
            console.log(err);
        }else {
            console.log("Done");
        }
      }
     });
    });


});

module.exports = router;

在route / index.js中执行此操作

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

router.post('/upload', upload.single('file'), function(req, res){

    var file = '/' + req.file.filename;
    var fs = require('fs');
    fs.open("./uploads",'r',function(err, fd){
    fs.readFile(file ,function(err, data){
      if(err) throw err;
      fs.writeFile("./uploads/"+req.file.filename, data), function(err) {
        if(err) {
            console.log(err);
        }else {
            console.log("Done");
        }
      }
     });
    });


});

这应该将文件上传到/ uploads目录中的应用程序文件系统。

确保您必须将这些html&js文件放入解决方案目录中的uploads文件夹中。请在下面的代码中进行检查。

Index.html代码:

    <form id        =  "uploadForm"
         enctype   =  "multipart/form-data"
         action    =  "/api/photo"
         method    =  "post"
    >
    <input type="file" name="userPhoto" />
    <input type="submit" value="Upload Image" id="upload" name="submit">
    </form>

Server.js代码:

var express = require("express");
var multer = require('multer');

var app = express();

var storage = multer.diskStorage({
    destination: function (req, file, callback) {
        callback(null, './uploads');
    },
    filename: function (req, file, callback) {
        var splitted = file.originalname.split('.');
        var format = splitted[splitted.length - 1];
        callback(null, file.fieldname + '-' + Date.now() + '.' + format);
    }
});
var upload = multer({ storage: storage }).single('userPhoto');

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

app.post('/api/photo', function (req, res) {
    upload(req, res, function (err) {
        if (err) {
            return res.end("Error uploading file.");
        }
        res.send("File is uploaded");
    });
});

app.listen(3000, function () {
    console.log("Working on port 3000");
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM