将表单操作更改为控制器操作

时间:2016-10-24 16:19:01

标签: javascript angularjs node.js express

我希望使用Angular-Node-Express在我的服务器上传文件。 其实我有这个表格

<html>
    <body>
        <form ref='uploadForm' id='uploadForm' action='/api/upload' method='post' encType="multipart/form-data">
                <input type="file" name="sampleFile" />
                <input type='submit' value='Upload!' />
        </form>     
    </body>
</html>

在我的服务器中,我有这个

var express = require('express');
var fileUpload = require('express-fileupload');
var app = express();

// default options 
app.use(fileUpload());

app.post('/api/upload', function(req, res) {
    var sampleFile;

    if (!req.files) {
        res.send('No files were uploaded.');
        return;
    }

    sampleFile = req.files.sampleFile;
    sampleFile.mv('./uploads/'+ Date.now()+'.jpg', function(err) {
        if (err) {
            res.status(500).send(err);
        }
        else {
            res.send('File uploaded!');
        }
    });
});

我想在我的控制器中执行其他过程之前发送文件,如添加名称,或检查我在此范围内的值

function upload($scope, $http,$state){
    //Some process
    $http.post('/upload','myFile')
        .success(function(data){
            //More process
        });
};

但我不知道在我的控制器中抓住文件很热

1 个答案:

答案 0 :(得分:0)

我建议使用ngFileUpload

我这样用:

HTML:

<form ng-submit="vm.submit()" enctype="multipart/form-data">
    <input type="file" 
      ngf-select="" 
      ng-model="vm.uploads.file" 
      ngf-multiple="true" 
      ngf-change="vm.fileSelected(vm.file, $event)" />
</form>

JS:

function fileSelected(files, $event) {
    vm.files // here you can access 1 or an array of files
}