首页 > 利用body-paser上传文件

利用body-paser上传文件

在使用body-paser中间件上传文件中,上传不成功
html代码如下
<!DOCTYPE html>
<html lang="zh-Ch">
<head>

<meta charset="UTF-8">
<title>向服务器端上传文件</title>
<script type="text/javascript">
    function uploadFile() {
        var formData=new FormData();
        var files=document.getElementById("file").files;
        var file=files[0];
        formData.append('myfile',file);
        var xhr=new XMLHttpRequest();
        xhr.open('POST','index.html',true);
        xhr.onload=function (e) {
            if(this.status==200)
                document.getElementById("result").innerHTML=this.response;
        };
        xhr.send(formData);
    }
</script>

</head>
<body>
<h1>使用bodyParser中间件上传文件</h1>
<form id="form1" enctype="multipart/form-data">

请选择文件<input type="file" id="file" name="file"><br/>
<input type="button" value="上传文件" onclick="uploadFile();">

</form>
<output id="result"></output>
</body>
</html>

node.js代码如下:

var express=require('express');
var fs=require('fs');
var app=express();
var bodyParser = require('body-parser');

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({

extended: false

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

res.sendFile(__dirname+'/index.html');

});
app.post('/index.html',function (req,res) {

var file=req.files.myfile;
fs.readFile(file.path,function (err,data) {
    if(err) res.send('读文件操作失败。');
    else{
        fs.writeFile(file.name,data,function (err) {
            if(err) res.send('写文件操作失败。');
            else res.send('文件上传成功。');
        })
    }
})

});
app.listen(1342,"127.0.0.1");

错误提示:

TypeError: Cannot read property 'myfile' of undefined

at D:\Program Files\nodejs\server.js:14:20
at Layer.handle [as handle_request] (D:\Program Files\nodejs\node_modules\express\lib\router\layer.js:95:5)
at next (D:\Program Files\nodejs\node_modules\express\lib\router\route.js:131:13)
at Route.dispatch (D:\Program Files\nodejs\node_modules\express\lib\router\route.js:112:3)
at Layer.handle [as handle_request] (D:\Program Files\nodejs\node_modules\express\lib\router\layer.js:95:5)
at D:\Program Files\nodejs\node_modules\express\lib\router\index.js:277:22
at Function.process_params (D:\Program Files\nodejs\node_modules\express\lib\router\index.js:330:12)
at next (D:\Program Files\nodejs\node_modules\express\lib\router\index.js:271:10)
at urlencodedParser (D:\Program Files\nodejs\node_modules\body-parser\lib\types\urlencoded.js:95:37)
at Layer.handle [as handle_request] (D:\Program Files\nodejs\node_modules\express\lib\router\layer.js:95:5)

node新手,还望不吝赐教!!!

body-parser 不支持文件.

multer 你可以用这个.

app.use(multer({ dest: path.join(__dirname), 'public/uploadDir'}))

看看文档 很简单.

【热门文章】
【热门文章】