如何在不使用带有下载属性的<a>元素或服务器的情况下下载文件?

根据caniuse,在Microsoft Edge build 10547+中支持元素的download属性,但不支持IE或Safari。<a>


如何在不使用<a>带download属性集的元素或服务器的情况下下载文件对象?


MYYA
浏览 719回答 3
3回答

慕森王

有许多方法可以触发下载。以下是一些:使用表格:<form method="get" action="mydoc.doc"><button type="submit">Download</button></form>使用javascript:<button type="submit" onclick="window.open('mydoc.doc')">Download</button>

呼啦一阵风

如果文件非常小,您可以使用a与href='data:[<mediatype>][;base64],<data>'。这可以允许您在mediatype模拟HTTP标头中添加内容处置。在中小型文件中,可以使用AJAX下载文件,然后使用Javascript File API来提示文件保存(API不支持保存,但很容易将数据转换为数据URL)。如果您想避免使用Javascript File API,可以尝试模拟锚点击,如此处所示。再次,正如Leo Farmer所指出的,这些解决方案不能保证浏览器不会在新选项卡中打开文件而不是将其保存到磁盘,但我认为可以安全地说所有用户都可以优雅地降级为cmd+S或ctrl+S键盘快捷键:-)

跃然一笑

您可以使用download属性和jquery执行此操作。下载属性不支持ie和safari / ios。所以你可以使用jquery来做到这一点&nbsp;$('.download').click(function(e) {&nbsp; &nbsp; e.preventDefault();&nbsp; //stop the browser from following&nbsp; &nbsp; window.location.href = 'uploads/file.doc';});<a href="no-script.html" class="download">Download</a>
打开App,查看更多内容
随时随地看视频慕课网APP