Я знаю, как сделать ajax запросов. Я также знаю, что могу получить Blob
с запросом ajax, использовать window.URL.createObjectURL(blob)
, затем создать элемент <a>
и установить его на этот URL для запуска загрузки двоичного файла.
My проблема заключается в следующем: у меня есть очень большой файл для загрузки, созданный на лету. При выполнении запроса сервер либо возвращает ошибку, либо начинает генерировать файл и начинает загрузку (все еще генерируя остальную часть файла). Файл может быть очень большим, поэтому я не хочу хранить его в оперативной памяти клиента. Вот почему я go не так, как я упоминал в начале.
Поэтому я хотел бы сделать это:
- Сделать запрос XMLHttp на сервер
- Проверка статуса в заголовке ответа
- Если статус 400+, я могу отобразить соответствующее сообщение об ошибке в моем веб-приложении
- Если статус 200, перенаправить запрос на то, чтобы браузер загрузил содержимое ответа (включая несколько предстоящих ГБ данных)
Возможно ли сделать все это за один вызов? Если нет, то есть ли API в разработке, которые сделают это возможным? Единственный способ, который я вижу сейчас, - это сделать два вызова API и некоторое сохранение состояния на стороне сервера, что не идеально в распределенной среде.