vue移动端安卓(通过后端接口文件流)下载文件到本地

项目使用vue+vant来开发的,开发环境使用js动态创建a标签来做下载功能的,测试环境用hbuilder打包为安卓发现这样的写法下载失败,改用h5的plus.downloader.createDownload发现下载成功,具体代码粘下面了,直接套用就可以!

    downLoadFile(data) {     

          //后端下载文件接口

          let picurl = `${this.baseUrl}/attache/downLoad/${data.id}?response-content-type=application/octet-stream`

          // 参数(文件名称)

          let name = data.fileName

          let datas = {

            //自定义下载文件路径,保存文件路径仅支持以"_downloads/"、"_doc/"、"_documents/"开头的字符串

            filename: '_downloads/' + name,

            //默认为GET请求。注意这里需大写“GET”、“POST”

            method: 'GET'

          }

          let dtask = plus.downloader.createDownload(

            picurl,

            datas,

            (d, status) => {

              // 下载完成

              if (status == 200) {

                this.$toast('正在打开')

                //下载成功,d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径

                var fileSaveUrl =

                  plus.io.convertLocalFileSystemURL(

                    d.filename

                  )

                plus.runtime.openFile(d.filename) //下载完后自动弹出可以选择的app,预览文件

              } else {

                dtask.clear() //清除下载任务

                this.$toast('下载失败')

              }

            }

          )

          // 开始下载

          dtask.start()     

    },

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
根据引用\[1\]中的描述,你在项目中有两处下载图片的功能,一处是将base64格式的二维码图片下载到本地,另一处是将HTML页面生成的图片下载到本地。你最初按照PC浏览器上下载文件的方式完成了这个功能,但在手机端测试时发现点击下载按钮没有效果。经过搜索和尝试各种方法后,你发现手机端浏览器禁止下载base64格式的文件。最后,你被迫砍掉了下载功能。 根据引用\[2\]中的代码,你使用了`${this.baseUrl}/attache/downLoad/${data.id}?response-content-type=application/octet-stream`来生成下载链接。 综合以上信息,你想知道在Vue移动端如何选择下载文件的位置。 在Vue移动端,由于浏览器的限制,无法直接控制文件下载位置。用户下载文件会默认保存在浏览器的默认下载位置。如果你希望用户可以选择下载位置,你可以考虑使用第三方插件或库来实现这个功能。例如,你可以使用FileSaver.js来实现文件下载,并提供给用户选择下载位置的选项。 请注意,具体的实现方式可能会因你的项目需求和使用的插件而有所不同。你可以根据具体情况进行调整和实现。 #### 引用[.reference_title] - *1* *3* [关于vue移动端下载图片](https://blog.csdn.net/tianqingmuyu/article/details/123193313)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [vue移动端安卓(通过后端接口文件下载文件到本地](https://blog.csdn.net/weixin_49698648/article/details/125541993)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值