首页 > 解决方案 > 根据 mime 类型,在弹出窗口中打开 PDF 或下载 word 文档

问题描述

我有一个在对话框中打开 pdf 的功能。它看起来像这样:

async function openPDFDialog (src)
{
    // ...
    modalDlg.querySelector('embed').src = src;
    // ...
}

如果我有一个网址,例如。/orderFile/0/0.

根据 mime 类型,我希望它执行不同的操作:

标签: html

解决方案


首先,您将需要fetch该文件并获取 mime 类型。

  • 但是,您包含的 mime 类型application/msword适用于.doc文件,而不是.docx. 正确的 mime 类型.docxapplication/vnd.openxmlformats-officedocument.wordprocessingml.document.

为避免请求 url 两次,您可以将响应保存为Blob.

从那里,根据 mime 类型,您使用 Blob 中的 url 来执行所需的操作。

let response = await fetch(src);
let mimeType = response.headers.get("Content-Type");
let blobURL = URL.createObjectURL(await response.blob());
if (mimeType === 'application/vnd.openxmlformats-officedocument.wordprocessingml.document')
{
    let a = Object.assign(document.createElement('a'), {
        href: blobURL,
        download: "filename.docx"
    });
    document.body.appendChild(a);
    a.click();    
    a.remove();
}
else if (mimeType === 'application/pdf')
{
    await openPDFDialog(blobURL);
}

推荐阅读