簡體   English   中英

使用NodeJS在Express上請求數據事件不起作用

[英]Request data event on express with nodeJS doesn't work

我正在嘗試使用Express進行一些文件上傳,但是請求數據事件存在問題。 即使我對其進行了一些控制台日志記錄測試,數據事件也不起作用。

這是我的服務器代碼:

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

//parser
app.use(express.bodyParser());


//form
app.get('/', function (req, res){
    res.sendfile(__dirname + "/upload.html");
});

//post
app.post('/', function(req, res){
        var imageName = req.files.image.name;
        //error
        if(!imageName){
            console.log("Error");
            res.redirect("/");
            res.end();
        } else {

                var file = fs.createWriteStream(__dirname + "/uploads/" + imageName);
                var fileSize = req.headers['content-length'];
                var uploadedSize = 0;
                req.on('data', function (chunk) {
                    var bufferStore = file.write(chunk);
                    if(bufferStore == false)
                        req.pause();
                    uploadedSize += chunk.length;
                    uploadProgress = (uploadedSize/fileSize) * 100;
                    console.log(Math.round(uploadProgress) + "%" + " uploaded\n" );
                });
                file.on('drain', function() {
                    req.resume();
                });

                req.on('end', function() {
                    console.log('Upload done!');
                    res.end();
                });
        }

});
app.listen(5000);

這是我的客戶代碼:

<!DOCTYPE HTML>
<html>
    <body>
        <form method='post' enctype='multipart/form-data'>
        <input type='file' name='image'/>
        <input type='submit' /></form>
    </body>
</html>

添加此模塊:

var path = require('path');

然后,嘗試以此替換您的發布操作:

app.post('/', function(req, res) {
    var uploadDir = __dirname + '/uploads/';

    if( !path.existsSync(uploadDir) ){
        fs.mkdirSync(uploadDir, 0755);
    }

    var filename = req.files.image.name;
    fs.readFile(req.files.image.path, function (err, data) {
        var save_path = uploadDir + filename;
        fs.writeFile(save_path, data, function (err) {
            if(err){
                res.json({
                    error: 'Error!'
                });
            } else {
                res.json({
                    success: true
                });
            }
            fs.unlink(req.files.image.path, function (err) {
              if (err) throw err;
            });
        });
    });
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM