点击链接直接下载的实现

         在web开发中,我们经常有这样的需求:点击一个链接直接弹出下载的对话框。以前我们最常用的办法就是把这样的文件加到链接上,这样可以让浏览者通过点击鼠标右键的目标另存为来下载所链接的文件。但是,存在这样的问题:如果浏览器能够识别已下载文件的扩展名,则浏览器就会激活该扩展名所关联的程序来打开所下载的文件。比如:在windows平台上,如果用户点击的链接链接的是一个“.doc”文件的话,那么,浏览器就会启动microsoft word应用程序来打开它。下面我们用servlet来实现该需求:

1.//get input byte[] from somewhere,you can also get it from local file or from DataBase
2.byte[]p12 = user.getP12Id();
3.String length = String.valueOf(p12.length);
4.OutputStream outputStream = response.getOutputStream();
5.response.setContentType("application/octet-stream"); 
6.response.setHeader("Content-disposition", "attachment;filename="+ loginId +".p12");
7.response.setContentType("application/pkcs-12");
8.response.setHeader("Content_Length", length);
9.outputStream.write(p12);            

    要直接下载一个文件,我们需要做两件事,第一件事是:设定响应的内容类为“application/octet-stream”,大小写无关, 访问页面的时候浏览器就会开启下载框对其内容进行下载。第二件事是:设置http的响应头名字为:content-disposition,设定值为:attachment; filename = thefilename。这里的thefilename就是出现在文件下载对话框里的默认文件名,通常和所下载的文件名字相同,但也可以不同。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/china8848/archive/2008/09/24/2974341.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果你的链直接下载文件的链,而不是文件预览链,那么你可以在前端中使用 `XMLHttpRequest`(简称XHR)来请求文件,然后将请求到的文件通过前端代码来进行预览。 比如,你可以在Vue.js组件中创建一个`<a>`标签,通过监听`click`事件来触发XHR请求,并通过`Blob`对象将请求到的文件转换成URL,最后使用`window.open()`方法来打开预览链。 以下代码演示了如何实现这个过程: ```vue <template> <div> <a href="#" @click.prevent="previewFile">Preview File</a> </div> </template> <script> export default { name: 'FilePreview', methods: { previewFile() { const xhr = new XMLHttpRequest() xhr.open('GET', 'https://www.example.com/example.pdf', true) xhr.responseType = 'blob' xhr.onload = () => { if (xhr.status === 200) { const blob = new Blob([xhr.response], { type: 'application/pdf' }) const url = URL.createObjectURL(blob) window.open(url) } } xhr.send() } } } </script> ``` 在上面的代码中,我们通过 `XMLHttpRequest` 对象来请求文件,并监听 `load` 事件来获取到请求到的文件。然后使用 `Blob` 对象将文件转换成 URL,并使用 `window.open()` 方法来打开预览链。 需要注意的是,不同类型的文件会有不同的 MIME 类型,所以在转换 `Blob` 对象时需要使用正确的 MIME 类型。如果你需要预览的文件类型比较多,可以通过判断文件后缀名等方式来动态设置 MIME 类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值