angularjs+nodejs文件上传,用form表单可以成功上传,用angularjs上传不上去

第一种情况,可以正常上传文件,代码如下:
html:
=======================start===========

<form enctype="multipart/form-data" action="api/Upload/" method="post">

<input id="file" type="file" name="imgUploader" multiple />
<input  id="submit"type="submit" name="submit" id="btnSubmit" value="Upload" />
</form>

======================end=====================

第二种情况,请求成功,但是文件没有上传上去,代码如下:
======================start====================
html:

<label for="file" class="btn btn-link" ng-click="vm.addjson()" style="font-size:10px;height:1px;margin:0px;padding-left:40px;">ファイル追加</label> 
<input type="file" id="file" ngf-select="true" ng-model="file" style="display: none"/>

angularjs:

 $scope.$watch('file', function (file) {
//      alert($scope.file);
        $scope.upload($scope.file); 
    });

    $scope.upload = function (file) { 
        alert("upload=  "+file.name);
        Upload.upload( { 
            headers: {'Content-Type':undefined},
            url:"api/Upload/",
            method:"post", 
            fields: {'username': $scope.username}, 
            file: file, 
            }) 
            .progress(function (evt) { 
                var progressPercentage = parseInt(100.0 * evt.loaded / evt.total); 
//              alert('progress: ' + progressPercentage + '% ' + evt.config.file.name); 
            }) 
            .success(function (data, status, headers, config) {
                alert("angularjs_qingqiuchenggong");
//              alert('file ' + config.file.name + 'uploaded. Response: ' + ' congig======='+config.sites); 
                //添加文件
                vm.addjson(file);
            }) 
            .error(function (data, status, headers, config) { 
//              alert('error status: ' + status);
                vm.addjson(file);
            }) 
    }; 

==========================end=======================
两种方法使用共同的nodejs ,代码如下:

 var Express = require('express');
var multer = require('multer');
var bodyParser = require('body-parser');
var path = require('path');
var app = Express();
app.use(bodyParser.json());
//app.use(Express.static(__dirname, "/static"));
app.use(Express.static(path.join(__dirname, '/static')));
var Storage = multer.diskStorage({
    destination: function (req, file, callback) {
        callback(null, "./json");
    },
    filename: function (req, file, callback) {
        callback(null, file.originalname);

    }
});
var upload = multer({ storage: Storage }).array("imgUploader", 3); //Field name and max count

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

app.post("/api/Upload", function (req, res) {
    upload(req, res, function (err) {
        if (err) {
            return res.end("Something went wrong!");
        }
//        return res.end("upload success!");
    });
});

app.listen(2000, function (a) {
    console.log("Listening to port 2000");
});

请问为什么使用使用上面第二种发法可以请求成功但是文件上传不上去呢?是我哪里写错了吗?帮我看一下,在线等,非常着急,谢谢了。

2个回答

fiddler抓包看下,enctype属性设置了没有

kongpancheng
LUCKSUNBOY 需要设置enctype,依据以上所给的代码?有没有明显的错误啊?fiddler抓包怎么抓啊
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问