2016-07-13 3 views
0

Вы можете порекомендовать мне пример Sails.Js + Angular.js для загрузки файлов на сервер, а затем их просмотра. Я рассмотрел множество примеров, но ни один из них не подходит. Когда я пытаюсь загрузить каждый раз, когда я получаю сообщение об ошибке в консоли:AngularJS + SailsJS ng-file-upload

XMLHttpRequest не может загрузить Localhost: 1337/анализы/загрузки. Ответ на запрос перед полетом не проходит проверку контроля доступа: заголовок «Access-Control-Allow-Origin» содержит недопустимое значение «». Происхождение localhost: 3000, следовательно, не допускается.

часть моего контроллер AngularJS (с модулем нг-файлы загрузка):

$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).

I'am с помощью этого https://github.com/jakemmarsh/angularjs-gulp-browserify-boilerplate для переднего конца

И Сори за мой английский.

ответ

0

Вы верны; проблема связана с вашим приложением Sails, не позволяющим localhost: 3000. Ознакомьтесь с документацией по номеру http://sailsjs.org/documentation/reference/configuration/sails-config-cors.

В принципе, вы должны разрешить localhost: от 3000 до CORS. Из вышеуказанной документации

'/foo/bar': { 
    target: 'FooController.bar', 
    cors: { 
    origin: 'http://foobar.com,https://owlhoot.com', 
    methods: 'GET,PUT,POST,OPTIONS,HEAD' 
    } 
} 

origin где находится http://localhost:3000, в вашем случае. А также не забудьте заменить маршрут конечной точки и target.

+0

спасибо, что ответ. Однако я не знаю, какой код должен быть в FooController.bar. Может быть, у вас есть пример? –

+0

Я положил этот код module.exports = function (req, res, next) { sails.log.debug ("Header GO"); res.header ('Access-Control-Allow-Origin', 'http: // localhost: 3000'); res.header ('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type'); res.header ('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS, HEAD'); next(); }; и ничего не произошло –

+0

Вы ввели предложенный код (с изменениями, необходимыми для вашего случая) в '/ config/cors.js'? Вы не должны создавать FooController, это просто пример. Синтаксис есть в основном 'YourControllerName.yourFunctionName' ... – Fissio

Смежные вопросы