Добавляем еще несколько вещей для ответа на этот вопрос для загрузки файла
Ниже приведен код java spring, который генерирует байт Array
@RequestMapping(value = "/downloadReport", method = { RequestMethod.POST })
public ResponseEntity<byte[]> downloadReport(
@RequestBody final SomeObejct obj, HttpServletResponse response) throws Exception {
OutputStream out = new ByteArrayOutputStream();
// write something to output stream
HttpHeaders respHeaders = new HttpHeaders();
respHeaders.setContentType(MediaType.APPLICATION_OCTET_STREAM);
respHeaders.add("X-File-Name", name);
ByteArrayOutputStream bos = (ByteArrayOutputStream) out;
return new ResponseEntity<byte[]>(bos.toByteArray(), respHeaders, HttpStatus.CREATED);
}
Теперь в javascript-коде с использованием FileSaver.js, можно загрузить файл с кодом ниже
var json=angular.toJson("somejsobject");
var url=apiEndPoint+'some url';
var xhr = new XMLHttpRequest();
//headers('X-File-Name')
xhr.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 201) {
var res = this.response;
var fileName=this.getResponseHeader('X-File-Name');
var data = new Blob([res]);
saveAs(data, fileName); //this from FileSaver.js
}
}
xhr.open('POST', url);
xhr.setRequestHeader('Authorization','Bearer ' + token);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.responseType = 'arraybuffer';
xhr.send(json);
Вышеупомянутый файл будет загружен
Отладка метода «разбора» класса ExpressionParser
. Вы можете проверить это, создав очень простое приложение, используя следующий код.
Просмотр
<App id="app">
<pages>
<Page id="page" title="{i18n>title}">
<content>
<Text text="{= ${/a} + ${/b} }" />
</content>
</Page>
</pages>
</App>
Контроллер
onInit: function () {
var oModel = new JSONModel({
a: 2,
b: 3
});
this.getView().setModel(oModel);
}
В DevTools вы можете использовать Ctrl kbd> + P kbd>, чтобы открыть файл, выполнив поиск по его имени - ExpressionParser
. Если нет, вы можете найти этот файл по следующему пути (см. Изображение ниже): /resources/sap/ui/base/ExpressionParser-dbg.js