通过URL下载文件,解决图片和视频直接打开预览的情况

需要fetch传入的url拿到blob,再创建URL。如果不fetch,图片和视频就是直接在网页中打开,而不是弹出下载页面。

// 通过URL下载,如:http://127.0.0.1:9090/file/local-plus/6706bf89b47f230acb5ded93.mp4
    async function downloadFile(url) {
        const suffix = getFileSuffix(url)
        const fileName = Date.now() + '.' + suffix
        const res = await fetch(url)
        const blob = await res.blob()
        const tempUrl = URL.createObjectURL(blob);
        const a = document.createElement('a');
        a.href = tempUrl;
        a.download = fileName;
        a.style.display = 'none'
        document.body.appendChild(a)
        a.click();
        document.body.removeChild(a)
        URL.revokeObjectURL(tempUrl);
    }

    // 通过URL获取后缀名
    function getFileSuffix(url) {
        return url.substring(url.lastIndexOf('.') + 1);
    }
要实现打开新窗口预览docx文件而不是下载,可以通过以下步骤进行操作。 首先,确保浏览器中已经安装了能够预览docx文件的插件或者默认的docx文件预览器。一般来说,现代浏览器都会自带默认的文档预览器。 然后,在使用window.open方法打开新窗口时,需要将docx文件URL作为参数传递给该方法。如下所示: ``` window.open('docx文件URL'); ``` 这将导致浏览器尝试在新窗口中预览docx文件。 但是,在某些情况下,浏览器可能会默认将docx文件下载的方式打开,而不是在窗口中进行预览。这可能是因为浏览器的安全设置或者插件配置等原因。 为了确保能够以预览的方式打开docx文件,可以尝试设置响应头的Content-Disposition属性。具体而言,将其设置为"inline",表示请求的文件应在浏览器中内联显示,而不是作为附件下载。 如果是通过服务器返回docx文件的方式提供文件下载服务,可以在服务器端设置响应头,示例如下: ``` response.setHeader("Content-Disposition", "inline;filename=filename.docx"); ``` 其中,response为服务器返回给客户端的响应对象,"filename.docx"为要下载的docx文件文件名。 总结起来,通过确保浏览器具有docx文件预览插件或默认预览能力,并设置适当的Content-Disposition响应头,我们可以尝试使用window.open方法在新窗口中预览docx文件
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值