Итак, как это работало, я сделал 'GET' и предоставил ID, а с возвращенными данными мне просто нужно было сделать это:
const subscription = this.downloadService.downloadFile(id, this.file.folderId).subscribe(data => {
window.location.href = data.url;
subscription.unsubscribe();
});
И Chrome автоматически загрузит файл и останется на сайте.
Теперь я делаю это:
const subscription = this.downloadFile(id, folderId).subscribe(data => {
const blob = new Blob([data], { type: 'image' });
const blobUrl = window.URL.createObjectURL(blob);
window.location.href = blobUrl;
subscription.unsubscribe();
});
И Chrome также начинает загрузку, но это всегда один и тот же файл, похожий на это в консоли:
Я пытался преобразовать его в файл, но для «window.location.href» нужен URL, а у меня его нет, когда я конвертирую его в файл, подобный следующему:
const file = new File([blob], name, { lastModified: Date.now(), type: 'image' })
Что мне нужно сделать с этими данными, чтобы убедиться, что они загружаются как изображения (я всегда пытаюсь загрузить изображения)?
РЕДАКТИРОВАТЬ: Таким образом, очевидно, мои httpParams были реализованы неправильно! Это был неправильный путь:
const httpParams = new HttpParams();
httpParams.append('action', 'downloadFile');
httpParams.append('fileIds', id.toString());
httpParams.append('currentLibraryFolderId', folderId.toString());
Который прошел только пустой httpParams. Это правильный путь:
const params = new HttpParams()
.set('action', 'downloadFile')
.set('fileIds', id.toString())
.set('currentLibraryFolderId', folderId.toString());