AngularJS с поддержкой StreamSaver.js

0

Я хочу добавить следующий код StreamSaver.js в AngularJS. Тот же синтаксис не принимается, поэтому я меняю код на набор угловой.

Я получил следующую ошибку WritableStream is not defined ошибку.

angular-1.5.7.min.js:117 ReferenceError: WritableStream is not defined
    at Object.createWriteStream (StreamSaver.js:92)
    at m.$scope.downloadFile (profile_ctrl.js:305)

Код примера StreamSaver работает нормально.

fetch(url).then(res => {
    let reader = res.body.getReader()
    let pump = () => {
        return reader.read().then(({ value, done }) => {
            if (done) {
                myFile.close()
                return
            }
            myFile.write(value)
            return pump()
        })
    }
    pump()
})

Если не измененный код, приведенный ниже.

var myFile = streamSaver.createWriteStream("filename.txt");
fetch(url).then(function(res) {
    $scope.pump = function(reader) {
        return reader.read().then(function(value, done) {
            if (done) {
                myFile.close();
                return;
            }
            myFile.write(value);
            return pump();
        });
    };
    var reader = res.body.getReader();
    $scope.pump(reader);
});
  • 0
    Дозаправляет ли ваш целевой браузер синтаксис ES6? StreamSaver работает только в Chrome и Opera, поэтому мои примеры были написаны с использованием новейшего синтаксиса. Вы можете преобразовать его в ES5
  • 0
    Я получаю эту синтаксическую ошибку во время компиляции кода. У меня есть сайт angularjs, который хочет загружать файлы в виде потоков. Chrome v52 - браузер, который я использую для тестирования.
Показать ещё 5 комментариев
Теги:

2 ответа

1
Лучший ответ

Ошибка связана с синтаксисом ES6. Следующий код работает для ES5 в браузере Chrome v52.

var myFile = streamSaver.createWriteStream("filename.txt");

fetch(url).then(function(res) {
  var reader = res.body.getReader();
  $scope.pump(reader);
});

$scope.pump = function(reader) {
  return reader.read().then(function(result) {
    if (result.done) {
      myFile.close();
      return;
    }
    myFile.write(result.value);
    return $scope.pump(reader);
  });
};
0

Вам лучше использовать существующие пакеты в angularjs. Например, угловая файловая заставка пытается обернуть FileSaver.JS.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню