【发布时间】:2015-02-09 06:52:51
【问题描述】:
背景
我尝试使用angular-file-upload 模块将图像从 localhost:3000 上传到 localhost:9000,我认为它们是不同的域,应该属于 CORS(跨域资源共享)。我看到this module supports CORS。我还遵循他们推荐的快速服务器设置here。但我仍然看不到请求中的正文对象或文件对象中的任何内容。
问题
- 既然这个模块支持CORS,为什么好像还是不行。
- 我是否应该明确告诉节点服务器在响应标头中设置一些内容,例如 (访问控制允许方法、访问控制允许来源、访问控制允许标头) 以及如何在快递中做到这一点? res.setHeader(.....) ?
- 如何解决这个问题?
代码
/* ***************************** ANGULAR ***************************************** */
var myApp = angular.module('myApp', ['angularFileUpload']);
myApp.controller('MyCtrl', [ '$scope', '$upload', function($scope, $upload) {
$scope.$watch('files', function(files) {
if (files) {
for (var i = 0; i < $scope.files.length; i++) {
var file = $scope.files[i];
$scope.upload = $upload.upload({
url: 'http://localhost:9000/upload/',
data: {myObj: $scope.myModelObj},
file: file,
}).progress(function(evt) {
console.log('progress: ' + parseInt(100.0 * evt.loaded / evt.total) + '% file :'+ evt.config.file.name);
}).success(function(data, status, headers, config) {
console.log('file ' + config.file.name + 'is uploaded successfully. Response: ' + data);
});
}
}
});
}]);
/* ***************************** SERVER SIDE ***************************************** */
var multipart = require('connect-multiparty');
var express = require('express');
var bodyParser = require('body-parser')
var _ = require('underscore');
var path = require('path');
var app = express();
app.use(multipart({
uploadDir: './uploads'
}));
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }));
// parse application/json
app.use(bodyParser.json());
app.use(function (req, res, next) {
console.log(req.files); // {} why ????
console.log(req.body); // {} why ????
});
app.listen(9000);
【问题讨论】:
-
尝试 res.header("Access-Control-Allow-Origin", "*");
-
@Dinesh 不幸的是,它不起作用:(
标签: angularjs node.js file-upload express cors