vue中,给一个URL地址,利用FileSaver.js插件下载文件到本地

这篇具有很好参考价值的文章主要介绍了vue中,给一个URL地址,利用FileSaver.js插件下载文件到本地。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

①首先下载 FileSaver.js 插件   

npm install file-saver --save

②在需要的.vue页面引入

import { saveAs } from 'file-saver'

 在HTML中引入

<script src="https://cdn.bootcdn.net/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js"></script>
 //FileSaver.js只有一个函数就是saveAs,它有三个参数,
 //第一个是:Blob、File、Url    可以是二进制流、文件、URL的地址。
 //第二个是:文件的名字
 //第三个是:可选的object对象。

 // 示例
 saveAs(参数一,参数二, 参数三)

③ 如果想保存一个TXT文档本地

save(){
   let blob = new Blob(["Hello, world!"], {type: "text/plain;charset=utf-8"});
   saveAs(blob, "hello world.txt");
}

// "Hello, world!"   是文件的内容
// "hello world.txt" 是文件的名字

结果:

 filesaver.min.js,vue.js,javascript,前端

内容:

filesaver.min.js,vue.js,javascript,前端

 

 ④ 如果想保存一个图片

save(){
  saveAs('https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg', "image.jpg")
}

// 注意:通过URL保存图片时,存在阿里云服务端的图片必须设置为允许跨域,
//       因为在通过saveAs函数下载时,会请求一次这个地址,如果没设置,则会出现跨域问题。

结果:

filesaver.min.js,vue.js,javascript,前端

 图片内容:

filesaver.min.js,vue.js,javascript,前端

 如果图片不允许跨域则会出现这种情况:

filesaver.min.js,vue.js,javascript,前端

 

⑤下面这个方法则可以完美的解决跨域问题,不光可以下载图片还可以下载PDF文件等其他文件。

    download() {
      axios.post("/mth-finance-capital-service/api/common/download/file", {data:this.fileUrl}, {
        headers: {"Content-Type": 'application/octet-stream'},
        transformRequest: [function (data, headers) {
          return data['data']
       }],
       responseType: 'blob'
      }).then(response => {

      //  const contentType = response.headers['content-type']
      //  const blob = new Blob([response.data], {type: contentType})
      // 这地方是前端进行的 blob转换,接口里面后端做了之后,我们就不需要再做了。

        saveAs(response.data, this.fileUrlName) 

      // saveAs(blob, this.fileUrlName)  要是前端转换的话就用这个

      }).catch(error => {
        console.log("----",error)
        // 处理错误
      })
    },

// 1. 直接发送axios请求,第一个是请求地址。
// 2. 第二个是图片或者其他文件的URL链接;这地方必须要用{}包起来,data是形参最好也加上。
// 3. headers: {"Content-Type": 'application/octet-stream'},请求头
// 4. transformRequest: [function (data, headers) {  return data['data']  }],
//    表示允许在向服务器发送前,修改请求数据,data就是上面的形参。
// 5. responseType: 'blob' 后端返回的图片是二进制流的形式,所以要加这个。
// 6. this.fileUrlName 是文件的名字

⑥ 调接口的原因是,让后端把要下载的图片URL或者其他文件的URL,做一下转换,转成blob类型的。

这个是响应成功后,.then里面response的信息。

filesaver.min.js,vue.js,javascript,前端

 最后调用,saveAs(response.data, this.fileUrlName)下载即可。

⑦ 结果:   // 文件名是第二个参数,我随便起的

filesaver.min.js,vue.js,javascript,前端

filesaver.min.js,vue.js,javascript,前端

 返回这样结果不要在意,到文件里打开图片就好了

filesaver.min.js,vue.js,javascript,前端

打开之后的图片

 filesaver.min.js,vue.js,javascript,前端

 

⑧要是出现图片破损的情况:

filesaver.min.js,vue.js,javascript,前端

 

 请检查发请求时 是否携带了 responseType: 'blob' ,要下载的图片链接是否用{}包起来了,回到步骤⑤看看。文章来源地址https://www.toymoban.com/news/detail-740563.html

到了这里,关于vue中,给一个URL地址,利用FileSaver.js插件下载文件到本地的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Chrome浏览器中的vue插件devtools的下载方式(使用Chrome应用商店/科学上网情况下)

    目录 devtools对前端来说的好处——开发预览、远程调试、性能调优、Bug跟踪、断点调试等  下载步骤:  测试阶段:  最近做项目要使用devtools这个vue插件。 首先先想个办法搞个加速器之类的,好实现科学上网。 在Chrome浏览器中访问以下网址: Chrome应用商店网址: https://c

    2024年02月14日
    浏览(30)
  • js 通过文件地址URL转为File文件对象

    通过文件地址URL,将所指文件转为File文件对象 文件url地址转为文件对象,代码如下(调用即可): 2.调用方式 代码如下(示例):

    2024年02月10日
    浏览(26)
  • unity webGL与js 交互(获取地址栏URL)

    1.unity传值给js unity中: js中: 2.js传值给unity 参数一 Cookie:场景中物体的名称 (最上层父物体名字,否则无法成功传值) 参数二 OnCookie_Callback:方法名称 参数三 result:值 unity中: 完整: unity场景中物体的名称  untiy代码: js代码:

    2024年02月04日
    浏览(42)
  • 解决Module not found: Error: ‘element-plus/lib/theme-chalk/index.css‘,通过下载插件,使用的是vue ui项目仪表盘

    1.首先在package.json中查看vue版本和element-ui版本 2.找到element-ui官网https://element.eleme.cn/#/zh-CN/component/quickstart,点击element-ui 3.进入到element–ui组件下载的地址 4.下载插件 vue-cli-plugin-element git clone https://github.com/ElementUI/vue-cli-plugin-element.git 5.根据README 没有项目就创建项目 vue create

    2024年02月13日
    浏览(30)
  • 前端vue单个文件上传支持图片,压缩包以及文件 , 下载完整代码请访问uni-app插件市场址:https://ext.dcloud.net.cn/plugin?id=13066

    前端vue单个文件上传支持图片,压缩包以及文件 , 阅读全文下载完整代码请关注微信公众号: 前端组件开发 效果图如下: 使用方法 HTML代码部分 JS代码 (引入组件 填充数据) CSS

    2024年02月09日
    浏览(34)
  • 前端导出文件 | fileSaver.js源码阅读

    了解fileSaver.js核心实现 自己动手实现简易导出功能 在Vue中如何使用文件 1、fileSave.js库地址:https://github.com/eligrey/FileSaver.js 2、src目录结构 3、在浏览器打开test.html,点击下载按钮,进行代码调试 进入saveAs函数后可按下一步进行调试,查看代码执行过程。 fileSaver.js核心代码实

    2024年02月05日
    浏览(32)
  • vue 中从后端获取到文件的 url 地址,前端根据 url 地址下载文件

    项目用的是 vben admin 框架,用的是 vue3 + TS 项目需求数据导出功能,前端需要实现文件下载功能 后端返回的是文件的 url 地址 (本项目中返回的是阿里云 oss 的文件地址) 从后端得到的是一个 url 地址,先通过 fetch api 请求这个 url 地址并转换成 blob 对象,通过 URL.createObjectUrl() 将 blo

    2024年02月06日
    浏览(31)
  • pycharm插件下载慢(pycharm插件下载慢原因)

    pycharm插件下载慢,pycharm里面下载库也是非常的慢。 这其实是个常识性的问题,我们下载的慢是因为Python使用pip方法安装第三方包时,需要从,https%3A%2F%2Fpypi.org%2F 资源库中下载。 这个网站是国外的服务器,访问自然就很慢,但是国内有很多的镜像站,所谓镜像站就是内容一样

    2024年02月04日
    浏览(38)
  • 一个神奇的小工具,让URL地址都变成了“ooooooooo“

    转换的逻辑有点像短链平台一样,只不过这个是将你的URL地址变的很长长长长,但是看着都是 ooooooooo,很好奇是如何实现的,所以查阅了源码,本文解读其核心实现逻辑,很有趣且巧妙的实现了这个功能。 发现一个很有创意的小工具网站,如封面图所示功能很简单,就是将

    2024年02月06日
    浏览(23)
  • 【idea】idea插件编写教程,博主idea插件已上架idea插件市场 欢迎下载

    前言:经常使用Objects.equals(a,b)方法的同学 应该或多或少都会因为粗心而传错参, 例如日常开发中 我们使用Objects.equals去比较 status(入参),statusEnum(枚举), 很容易忘记statusEnum.getCode() 或 statusEnum.getVaule() ,再比如 我们比较一个订单code时 orderCode(入参),orderDTO(其它业务对象) 很容

    2024年01月17日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包