当前位置: 首页 > 知识库问答 >
问题:

如何使用Angular和Java在浏览器的另一页中打开预览文件(pdf、docx、txt等)

鲍建业
2023-03-14

我正在使用Angular7和Java8开发一个web应用程序。我正在上传一个文件(pdf、docx、txt等),但问题是我无法通过RESTful web服务在浏览器的另一个页面中打开它。我得到错误415不支持的媒体类型。我尝试过这个帖子,但没有成功。以下是前端和后端的代码片段:

角组件(通过传递路径文件名的按钮调用的方法示例: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);
        }   
     });
 }

角度服务

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个答案

柏高洁
2023-03-14

你不能。浏览器没有任何内置的方式来查看Word文档,因此,除非用户已将浏览器配置为使用某个插件打开它(世界上99%的人都没有这样做),否则浏览器将提示他们下载该文件

目前没有浏览器具有呈现Word文档所需的代码,据我所知,目前也没有用于呈现Word文档的客户端库。

但是,如果你只需要显示Word文档,但不需要编辑它,你可以通过一个使用谷歌文档的查看器

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

许多人使用这种方法来查看他们的文档文件。您可以在此处查看:如何使用fancybox显示word文档

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

 类似资料:
  • 我尝试了不同的方法,如iframe、object,在网页上作为预览查看/显示文档。iFrame和google文档仅适用于公共可用的文档。如何显示/预览本地主机文件夹中存储的文档。

  • 问题内容: 我想执行XMLHttpRequest,然后通过POST方法发送文件名在浏览器中打开PDF。 这可能吗,或者XMLHttpRequest仅用于HTML? 问题答案: 如果您查询的URL实际上返回PDF数据,则无法通过XMLHttpRequest进行操作。 为什么?因为该响应是包含原始PDF数据的HTTP响应。即使您确实可以通过responseText`属性访问数据,JavaScript也

  • 本文向大家介绍Asp.net实现直接在浏览器预览Word、Excel、PDF、Txt文件(附源码),包括了Asp.net实现直接在浏览器预览Word、Excel、PDF、Txt文件(附源码)的使用技巧和注意事项,需要的朋友参考一下 1.功能说明 输入文件路径,在浏览器输出文件预览信息,经测试360极速(Chrome)、IE9/10、Firefox通过 2.分类文件及代码说明 DemoFiles 存

  • 问题内容: 在我的servlet中,我使用下面的代码在浏览器中打开PDF文件,但是,它显示了一个下载对话框。 我做错了什么? 问题答案: 你可以尝试用

  • 问题内容: 我是angular js的新手,我希望在按下按钮后在浏览器的新窗口中打开PDF文档。 我在前端发出GET请求,在后端有一个Java Rest服务,该服务响应GET并生成PDF。我希望在浏览器中打开此PDF。 如果无法以这种方式打开PDF,那么至少要使用AngularJs打开任何PDF,我该怎么做? 这就是后端在其余服务中生成响应的内容。 问题答案: 如果您有这样的事情: 而是这样做: