Как открыть файл предварительного просмотра (pdf, docx, txt, et c.) На другой странице браузера, используя Angular и Java - PullRequest
0 голосов
/ 25 марта 2020

Я разрабатываю веб-приложение, используя Angular 7 и Java 8. Я загружаю файл (pdf, docx, txt et c ...), но проблема в том, что я не могу открыть это на другой странице браузера через веб-сервис RESTful. Я получаю ошибку 415 Unsupported Media Type. Я пытался с методом POST и GET без какого-либо успеха. Это фрагменты кода, front-end и back-end:

Angular компонента (метод вызывается кнопкой, передающей путь + пример файла: C / doc / foo.pdf)

download(doc) {     
     this.service.downloadFile(doc.path).subscribe(response => {
        if(response) {
           let blob = new Blob([response], { type: 'text/json; charset=utf-8' });
           const url= window.URL.createObjectURL(blob);
           window.open(url);
        }   
     });
 }

Angular сервис

downloadFile(path): Observable<Blob> {
    const url = '/download';
    return this.http.post<Blob>(url, path, { responseType: 'blob' as 'json' });
}

Java Контроллер

@PostMapping(value = "download", produces = { MediaType.APPLICATION_JSON_UTF8_VALUE })
@ResponseBody
public byte[] download(@RequestBody String path) {
    try {
        return this.provvedimentoService.getDownload(path);
    } catch (IOException | EgesException e) {
        e.printStackTrace();
        return null;
    }
}

Java Сервис

public byte[] getDownload(String pathFile) throws EgesException, IOException {
    Path path = Paths.get(pathFile);
    if(path.toFile().exists())
        return Files.readAllBytes(path);
    else
        throw new EgesException(EgesExceptionConstants.WARNING_ACT_NOTFOUND_EXCEPTION);
}

1 Ответ

1 голос
/ 26 марта 2020

Вы не можете. Браузеры не имеют встроенного способа просмотра документов Word, поэтому, если пользователь не настроил свой браузер так, чтобы он открывал его с помощью какого-либо плагина (чего не было в 99% случаев), браузер предложит ему загрузить файл. .

В настоящее время ни один браузер не имеет кода, необходимого для визуализации документов Word, и, насколько мне известно, в настоящее время не существует библиотек на стороне клиента для их рендеринга.

Однако, если вам нужно только отобразить документ Word, но не нужно редактировать его, вы можете использовать Google Documents 'Viewer через <iframe> для отображения удаленно размещенного .pdf/ .doc/.docx /.txt et c

<iframe src="https://docs.google.com/gview?url=http://remote.url.tld/path/to/document.doc&embedded=true"></iframe>

Многие люди использовали эти методы для просмотра файла своих документов. Вы можете проверить здесь: Как отобразить текстовый документ, используя fancybox

<iframe width="100%" height="300px" src="https://docs.google.com/gview?url=http://index-of.co.uk/Google/googlehacking.pdf&embedded=true"></iframe>

Вы можете добавить URL своего файла документа, например так:

https://docs.google.com/viewer?url=<url for your file>&embedded=true

Здесь будет URL вашего файла <url for your file>

У вас есть Еще один способ просмотра .pdf/ .doc/.docx /.txt et c как в системе Google iframe Microsoft Document viwer webapp.

Вы можете использовать ее следующим образом.

<iframe src='https://view.officeapps.live.com/op/embed.aspx?src=http://writing.engr.psu.edu/workbooks/formal_report_template.doc' width='80%' height='800px' frameborder='0'></iframe>

<iframe src='https://view.officeapps.live.com/op/embed.aspx?src=http://writing.engr.psu.edu/workbooks/formal_report_template.doc' width='80%' height='800px' frameborder='0'></iframe>

Решение, адаптированное из " Как отобразить документ Word (.do c, .docx) в браузере, используя JavaScript?".

Это встроенный документ Microsoft Office, работающий на Office Online.

embed.aspx?src=<your_will_be_your_document_file_url>' width='80%'

добавьте сюда свой файл документа <your_will_be_your_document_file_url>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...