AngularJS + SailsJS ng-file-upload

时间:2016-07-13 00:16:17

标签: javascript angularjs upload sails.js ng-file-upload

你能推荐一个Sails.Js + Angular.js的例子来上传文件到服务器,然后查看它们。我已经回顾了很多例子,但两者都不合适。 当我每次在控制台中收到错误时尝试下载:

  

XMLHttpRequest无法加载localhost:1337 / analyze / upload。对预检请求的响应未通过访问控制检查:“访问控制 - 允许 - 来源”'标头包含无效值''。原因localhost:3000因此不允许访问。

我的AngularJS控制器的一部分(使用ng-file-upload模块):

    $scope.upload = function (file) {
    Upload.upload({
        url: AppSettings.serverUrl+'/analyzes/upload',
        data: {file: file}
    }).then(function (resp) {
        console.log('Success ' + resp.config.data.file.name + 'uploaded. Response: ' + resp.data);
    }, function (resp) {
        console.log('Error status: ' + resp.status);
    }, function (evt) {
        var progressPercentage = parseInt(100.0 * evt.loaded / evt.total);
        console.log('progress: ' + progressPercentage + '% ' + evt.config.data.file.name);
    });
};

我的HTML:

<div class="button" ngf-select="upload($file)">Upload on file select</div>

我的Sails.JS控制器(我也有空模型): module.exports = {

  upload: function  (req, res) {
    req.file('analyzes').upload(function (err, files) {

      if (err)
        return res.serverError(err);

      return res.json({
        message: files.length + ' file(s) uploaded successfully!',
        files: files
      });
    });
  }
};

我觉得问题的根源是我使用单独的URL来显示网站(localhost:3000)和其他Sails.Js(localhost:1337)。

我正在使用此https://github.com/jakemmarsh/angularjs-gulp-browserify-boilerplate作为前端

我的英语是真的。

1 个答案:

答案 0 :(得分:0)

你是对的;问题与您的Sails应用程序不允许localhost:3000有关。查看http://sailsjs.org/documentation/reference/configuration/sails-config-cors上的文档。

基本上,您需要允许localhost:3000到CORS。 从上面的文档

origin

targethttp://localhost:3000,在您的情况下。并且不要忘记替换端点路由和tf.gradients