Загрузить файл JSON в браузере

У меня нет большого опыта работы с фронтендом, так что терпите меня.

У меня есть локальное приложение Angular в браузере (без серверной части), и я хочу загрузить файл JSON, чтобы я мог отображать загруженные данные на графиках. Так как я не знаю, могу ли я просто fs.readFile из Angular, я выбрал ng-file-upload, чтобы загрузить файл удобным способом (из файлового браузера). Дайте мне знать, если это не тот инструмент ...

Поэтому я скопировал код из официального JS Fiddle в репо. Пришлось немного изменить его, чтобы я мог загружать что-нибудь - удалите проверки.

var app = angular.module('app', ['ngFileUpload']);

app.controller('fileUploader', ['$scope', 'Upload', '$timeout', function ($scope, Upload, $timeout) {
  $scope.uploadFiles = function(file, errFiles) {
    $scope.f = file;
    $scope.errFile = errFiles && errFiles[0];
    if (file) {
      file.upload = Upload.upload({
        url: 'https://angular-file-upload-cors-srv.appspot.com/upload',
        data: {file: file}
      });

      file.upload.then(function (response) {
        $timeout(function () {  // don't know why this timeout 
         $scope.fileReady = true;
         file.result = response.data;

         // can't figure out what to do with this!!!
         console.log('response.data:\n', JSON.stringify(response.data.result, null, 2));
        });
      }, function (response) {
        if (response.status > 0)
          $scope.fileError = response.status + ': ' + response.data;
      });
    }
  };
}]);

Ответ выглядит как объект, с которым я не могу много сделать:

 [
  {
    "fieldName": "file",
    "name": "my-awesome-data.json",
    "size": "364077"
  }
]

Как мне получить фактические данные, которые были загружены / проанализировать файл JSON?


person sakovias    schedule 25.08.2016    source источник
comment
Да, возможно, ng-file-uploader не подходит для работы с локальными файлами. Вот гораздо более простое решение: stackoverflow.com/questions/26165919/   -  person sakovias    schedule 25.08.2016


Ответы (1)


Попробуйте получить содержимое файла с помощью $ http.get, например:

$http.get(response.data).success(function(data) {
    console.log(data);
});
person Flavio Misawa    schedule 25.08.2016