LUCKSUNBOY 2017-07-27 07:41 采纳率: 85.7%
浏览 1626
已采纳

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条回答

  • threenewbee 2017-07-27 16:08
    关注
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 用三极管设计一个单管共射放大电路
  • ¥20 fluent无法启动
  • ¥15 孟德尔随机化r语言运行问题
  • ¥15 pyinstaller编译的时候出现No module named 'imp'
  • ¥15 nirs_kit中打码怎么看(打码文件是csv格式)
  • ¥15 怎么把多于硬盘空间放到根目录下
  • ¥15 Matlab问题解答有两个问题
  • ¥15 LCD12864中文显示
  • ¥15 在使用CH341SER.EXE时不小心把所有驱动文件删除了怎么解决
  • ¥15 gsoap生成onvif框架