精华内容
下载资源
问答
  • 2021-10-08 17:06:26

    注意!!!!!!!!!!!!swagger下载的文件是损坏的!!!!!!!!!!
    所以在浏览器直接输入一下路径就能下载了

    更多相关内容
  • 微信小程序里面做下载文件并保存的功能 一、涉及api 1.`wx.saveFile()` 2.`wx.downloadFile()` 3.`wx.getFileSystemManager().saveFile()` 4.api总结 二、解决方案 1.方案一 2.方案二 总结


    前言

    总是有需求想在微信小程序里面做下载文件并保存的功能,所以自己整理了一下小程序涉及到下载api,大致理了下在小程序里面下载的流程和解决方案。


    一、涉及api

    1.wx.saveFile()

    ​ 文档链接:https://developers.weixin.qq.com/miniprogram/dev/api/file/wx.saveFile.html

    作用:保存文件到本地。

    ​注意:
    1.该api调用的限制是下载文件最大为10m,且该接口已停止维护。
    2.不支持保存后的文件转发,保存后的文件仅支持在小程序内使用。
    3.保存的位置是在小程序缓存里面,开发者和用户不需要关心。

    2.wx.downloadFile()

    ​ 文档链接:https://developers.weixin.qq.com/miniprogram/dev/api/network/download/wx.downloadFile.html

    作用:下载文件资源到本地。客户端直接发起一个 HTTPS GET 请求,返回文件的本地临时路径 (本地路径)。
    注意:
    单次下载允许的最大文件为 200MB。

    3.wx.getFileSystemManager().saveFile()

    文档链接:https://developers.weixin.qq.com/miniprogram/dev/api/file/FileSystemManager.saveFile.html

    作用:微信文件管理对象,保存临时文件到本地。
    注意:
    1.FileSystemManager是微信小程序文件管理器,通过 wx.getFileSystemManager 获取,saveFile()是它提供的一个方法

    4.api总结

    以上三个api都不能实现真正意义的下载保存,因为微信小程序提供的存储服务是以小程序和用户维度隔离的存储服务,所以下载下来之后用户并不能访问到自己下载的文件。做不到用户下载文件之后可以快捷的找到下载的文件。只是下载到微信app的缓存里面。且微信也不建议开发人员或用户去查询本地文件存储的路径。该结论官方文档也有具体说明:
    微信小程序本地文件关系图

    文档链接:https://developers.weixin.qq.com/miniprogram/dev/framework/ability/file-system.html

    二、解决方案

    基于以上问题,有以下可实行的解决方案

    1.方案一

    使用wx.downloadFile() 下载对应文件后,使用fileSystemManager.saveFile API保存文件为图片格式;保存成功后,再使用wx.saveImageToPhotosAlbum保存到相册,然后这个时候我们给出弹窗提醒让用户跑到相册文件中找到对应的文件重命名改掉文件格式。

    缺陷:这种方式对iOS某些机型系统不兼容。具体我也没去试,因为后续没有使用该方案。

    代码:因为我是用uniapp写的案例,所以代码是这样的,且因为做个示例,代码格式写的层层嵌套,但是大概实现关键代码都在,望各位大佬包容。

    			downloadFile(){
    				let link = 'https://www.gjtool.cn/pdfh5/git.pdf'
    				//下载文件
    				wx.downloadFile({
    				  url: link,
    				  success (res) {
    				    if (res.statusCode === 200) {
    					  //重新改写文件后缀
    				      wx.getFileSystemManager().saveFile({
    						  tempFilePath:res.tempFilePath,
    						  //wx.env.USER_DATA_PATH 是微信提供了一个用户文件目录给开发者,开发者对这个目录有完全自由的读写权限
    						  filePath:`${wx.env.USER_DATA_PATH}/hello.png`,
    						    success(res) {
      						    console.log(res.savedFilePath) // res.savedFilePath 为一个本地缓存文件路径
    							  //保存图片
    							  wx.saveImageToPhotosAlbum({
    								  filePath:res.savedFilePath,
    							      success(res) {
    									  console.log(res)
    									  console.log('保存图片成功')
    									  //这里可以出个弹窗,给用户提醒,让他去文件管理器里面找到后重命名
    								  }
    							  })
      						  }
    					  })
    				    }
    				  }
    				})
    			},
    

    该代码片段在自己的安卓机上测过了,可以实现。

    2.方案二

    ​ 先使用下载文件api把文件下载下来,再使用wx.openDocument()打开文件里面加上showMenu字段,然后就可以看到在打开的文件右上角出现了···

    ​ ios表现:ios点击之后会有发送给朋友的选项,选择分享给朋友之后就可以把文件直接发送给对方了,然后你就可以在聊天记录里面拿到这个文件;

    ​ 安卓表现:安卓手机里面有保存文件的选项;

    缺陷:不能 “下载”后直接选择某个文件发给其他人,这个方案每次想发送必须先上小程序找到该文件,下载打开文件再去转发(而且必须是微信好友);或者在之前转发的聊天记录里面找到该文件。

    代码:

    			downloadFileOpen(){
    				let link = 'https://www.gjtool.cn/pdfh5/git.pdf'
    				//下载文件
    				wx.downloadFile({
    				  url: link,
    				  success (res) {
    				    if (res.statusCode === 200) {
    						const filePath = res.tempFilePath
        					wx.openDocument({
        					  filePath: filePath,
    						  showMenu:true, //关键点
        					  success: function (res) {
        					    console.log('打开文档成功')
        					  }
        					})
    				    }
    				  }
    				})
    			}
    

    安卓具体表现:
    安卓转发
    ios具体表现:
    在这里插入图片描述

    总结

    其实没啥好说的,仔细看官方文档还是能看到这个“文件下载保存功能”不是我们正常想的下载文件到手机里面,随便可以分享的。后续我们在项目中也是使用的方案二,方案一用户体验不好所以没有考虑了。

    注意:因为微信小程序的能力也在不断增加,所以该文章适用于我文章发布时间。

    个人水平有限,有问题欢迎大家留言指导,仅供学习和参考。

    学海无涯!努力二字,共勉!

    展开全文
  • 在线文档下载神器

    2017-12-21 17:23:13
    在线文档下载神器,比如百度文档等,下载文档直接转PDF格式
  • Java下载文件的几种方式

    万次阅读 2021-03-05 19:04:41
    1.以流的方式下载.public HttpServletResponse download(String path, HttpServletResponse response) {try {// path是指欲下载文件的路径。File file = new File(path);// 取得文件名。String filename = file....

    1.以流的方式下载.

    public HttpServletResponse download(String path, HttpServletResponse response) {

    try {

    // path是指欲下载的文件的路径。

    File file = new File(path);

    // 取得文件名。

    String filename = file.getName();

    // 取得文件的后缀名。

    String ext = filename.substring(filename.lastIndexOf(".") + 1).toUpperCase();

    // 以流的形式下载文件。

    InputStream fis = new BufferedInputStream(new FileInputStream(path));

    byte[] buffer = new byte[fis.available()];

    fis.read(buffer);

    fis.close();

    // 清空response

    response.reset();

    // 设置response的Header

    response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes()));

    response.addHeader("Content-Length", "" + file.length());

    OutputStream toClient = new BufferedOutputStream(response.getOutputStream());

    response.setContentType("application/octet-stream");

    toClient.write(buffer);

    toClient.flush();

    toClient.close();

    } catch (IOException ex) {

    ex.printStackTrace();

    }

    return response;

    }

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    2.下载本地文件

    public void downloadLocal(HttpServletResponse response) throws FileNotFoundException {

    // 下载本地文件

    String fileName = "Operator.doc".toString(); // 文件的默认保存名

    // 读到流中

    InputStream inStream = new FileInputStream("c:/Operator.doc");// 文件的存放路径

    // 设置输出的格式

    response.reset();

    response.setContentType("bin");

    response.addHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");

    // 循环取出流中的数据

    byte[] b = new byte[100];

    int len;

    try {

    while ((len = inStream.read(b)) > 0)

    response.getOutputStream().write(b, 0, len);

    inStream.close();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    3.下载网络文件

    public void downloadNet(HttpServletResponse response) throws MalformedURLException {

    // 下载网络文件

    int bytesum = 0;

    int byteread = 0;

    URL url = new URL("windine.blogdriver.com/logo.gif");

    try {

    URLConnection conn = url.openConnection();

    InputStream inStream = conn.getInputStream();

    FileOutputStream fs = new FileOutputStream("c:/abc.gif");

    byte[] buffer = new byte[1204];

    int length;

    while ((byteread = inStream.read(buffer)) != -1) {

    bytesum += byteread;

    System.out.println(bytesum);

    fs.write(buffer, 0, byteread);

    }

    } catch (FileNotFoundException e) {

    e.printStackTrace();

    } catch (IOException e) {

    e.printStackTrace();

    }

    }

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    4.支持在线打开的方式

    public void downLoad(String filePath, HttpServletResponse response, boolean isOnLine) throws Exception {

    File f = new File(filePath);

    if (!f.exists()) {

    response.sendError(404, "File not found!");

    return;

    }

    BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));

    byte[] buf = new byte[1024];

    int len = 0;

    response.reset(); // 非常重要

    if (isOnLine) { // 在线打开方式

    URL u = new URL("file:///" + filePath);

    response.setContentType(u.openConnection().getContentType());

    response.setHeader("Content-Disposition", "inline; filename=" + f.getName());

    // 文件名应该编码成UTF-8

    } else { // 纯下载方式

    response.setContentType("application/x-msdownload");

    response.setHeader("Content-Disposition", "attachment; filename=" + f.getName());

    }

    OutputStream out = response.getOutputStream();

    while ((len = br.read(buf)) > 0)

    out.write(buf, 0, len);

    br.close();

    out.close();

    }

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    喜欢本文的朋友们,欢迎关注微信公众号“Java面试达人”,收看更多精彩内容

    201904141404570.jpg

    wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

    展开全文
  • 网页文档下载工具

    2016-03-06 18:10:20
    网页文档下载工具
  • vue下载文件常用的几种方式

    千次阅读 2022-03-27 19:44:03
    vue下载文件常用的几种方式 一、直接打开 直接打开是指我们直接使用window.open(URL)的方法 优点:简单操作 缺点:没办法携带token 二、我们可以自己封装一个方法,比如如下: import axios from "axios" import *...

    vue下载文件常用的几种方式

    一、直接打开

    直接打开是指我们直接使用window.open(URL)的方法
    优点:简单操作
    缺点:没办法携带token

    二、我们可以自己封装一个方法,比如如下:

    import axios from "axios"
    import * as auth from '@/utils/auth.js'
    
    let ajax = axios.create({
        baseURL: process.env.VUE_APP_BASE_API,
        timeout: 100000
    });
    
    ajax.interceptors.request.use(config => {
            config.headers = {
                Authorization: auth.getToken(),
                // OrgId: auth.getUser().orgId,
                // UserId: auth.getUser().id,
            }
            return config
        },
        err => {
            return Promise.reject(err)
        })
    
    let downloadFile = async (url, formData, options) => {
        await ajax.post(url, formData, {responseType: 'arraybuffer'}).then(resp => download(resp, options))
    }
    
    let getFile = async (url, options) => {
        await ajax.get(url, {responseType: 'blob'}).then(resp => download(resp, options))
    }
    
    let download = (resp, options) => {
        let blob = new Blob([resp.data], {type: options.fileType ? options.fileType : 'application/octet-binary'})
        //创建下载的链接
        let href = window.URL.createObjectURL(blob)
        downloadBlob(href, options.fileName)
    }
    
    let downloadBlob = (blobUrl, fileName, revokeObjectURL) => {
        let downloadElement = document.createElement('a')
        downloadElement.href = blobUrl
        //下载后文件名
        downloadElement.download = fileName
        document.body.appendChild(downloadElement)
        //点击下载
        downloadElement.click()
        //下载完成移除元素
        document.body.removeChild(downloadElement)
        if (revokeObjectURL == null || revokeObjectURL) {
            //释放掉blob对象
            window.URL.revokeObjectURL(blobUrl)
        }
    }
    
    let getDownloadFileUrl = async (url, fileType) => {
        let blob
        await ajax.get(url, {responseType: 'blob'}).then(resp => {
            blob = new Blob([resp.data], {type: fileType ? fileType : 'application/octet-binary'});
        })
        return window.URL.createObjectURL(blob);
    }
    
    let getDownloadFileUrlByPost = async (url, data, fileType) => {
        let blob
        await ajax.post(url, data, {responseType: 'blob'}).then(resp => {
            blob = new Blob([resp.data], {type: fileType ? fileType : 'application/octet-binary'});
        })
        return window.URL.createObjectURL(blob);
    }
    
    let getDownloadFileBlob = async (url, fileType) => {
        let blob
        await ajax.get(url, {responseType: 'blob'}).then(resp => {
            blob = new Blob([resp.data], {type: fileType ? fileType : 'application/octet-binary'});
        })
        return blob;
    }
    
    export default {
        ajax,
        downloadFile,
        getFile,
        getDownloadFileUrl,
        getDownloadFileUrlByPost,
        getDownloadFileBlob,
        downloadBlob
    }
    
    

    然后在我们调用的那个页面中直接引入使用就好啦

    //先引用
    import ajax from '../../utils/ajax.js'
    //使用
    ajax.downloadFile('URL',null,{下载的文件名称})
    

    这样看是不是就挺容易的
    希望能帮助到你

    展开全文
  • 移动端H5下载文件

    万次阅读 2019-11-12 11:27:16
    前段时间遇到一个需求,需要在H5页面中增加下载文件按钮,下载一个压缩文件,第一个想到的当然是最普遍和常用的方法:动态生成a标签,把链接地址给到href属性,触发一个click事件,完美下载。于是撸起袖子就开干。 ...
  • 【selenium】下载文件

    千次阅读 2022-03-01 13:52:45
    【selenium】下载文件
  • vue 实现点击下载文件

    千次阅读 2021-09-01 16:44:42
    vue实现点击下载文件文档 1.代码如下 //导出事件 Export() { let link = document.createElement("a"); //创建一个a标签 link.style.display = "none"; //将a标签隐藏 link.href = safe + "/work/plan/...
  • 最近在做ant-design-vue框架的后台项目,需要用了一下的下载导入功能 fetch下载文档流 1.接收的数据需要先进行response.json() 如下: fetch(url,xxx).then(response=>{return response.json()}).then(res=>{console....
  • js下载文件常用的两种方式

    千次阅读 2021-10-19 11:46:49
    1、后端直接返回文件服务器地址,前端创建a标签模拟 export function downloadFileUrl (url, fileName) { const elink = document.createElement('a') elink.href = url elink.setAttribute('download', ...
  • js下载文件流,提示文件损坏问题

    千次阅读 2021-01-19 11:53:45
    记录一下前端下载后端返回的文件流,提示文件损坏问题。 const blob = new Blob([content.data], { // type是需要对应的文件类型 type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", }...
  • 微信小程序下载文件至本地,并打开文档 downloadfile(e){ var url = e.currentTarget.dataset.url; //下载文件,生成临时地址 wx.downloadFile({ url: url, success(res) { // console.log(res) //保存到本....
  • Django下载文件
  • Github使用教程&Git下载文件

    千次阅读 2020-07-28 09:09:55
    先上图,看不懂没事,接着看,后面有分部教程 不喜欢文字,没事,本来我也是看网上视频学的,不过视频那么多真的很多,特别是我看到小姐姐们的教程就忍不住点进去看,结果...使用Git下载文件(以刚建的文件为例) Gi.
  • 从Github上下载文件的方法汇总

    万次阅读 多人点赞 2020-09-09 17:58:29
    对于程序猿来说,Github简直就是个宝藏,里面有世界各地大神的代码,可以放心安全高效的食用,本文整理了Github文件的一些下载方法,仅供参考。 1. 通过git命令行 特点: 通过git指令下载文件只能是一个项目包,不...
  • 谷歌浏览器无法下载文件

    千次阅读 2020-12-03 21:19:21
    1.下载文件总是没反应 2.后来不仅没反应,还会闪退
  • 腾讯会议下载文档的方式

    千次阅读 2020-06-12 20:25:17
    腾讯会议界面右下角的更多–>文档–>打开想要下载文件–>右上方的文件选项下拉–>导出为…… -->导出完成
  • 当返回的文件是以文件流的形式返回的时候,前端可以自由更改文件名称 但是如果只有一个链接地址怎么办呢? 方法如下:(前端自己创造文件流) <!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//...
  • 今天遇到问题从ftp下载文件到本地路径无法查看,发现是文件名称中含有比如空格,问号等非常规字符存在,虽然在本地创建了对应的文件,但是流无法识别一些非常规字符,所以即使下载到本地也显示文件损坏或错误。...
  • Vue 通过a标签下载文件

    千次阅读 2020-10-10 15:04:54
    这是Vue-cli3 写法 因为public文件夹是静态拷贝。 并不要把文件放到src>assets里面 因为assets中的文件会经过 webpack 打包,重新编译。...下载文件</a> vue-cli3 文件目录 而 vue-cli2 需要下载的文
  • * 根据指定URL将文件下载到指定目标位置 * urlPath 下载路径 * downloadDir 文件存放目录 * @return */ public String downloadFile(HttpServletRequest request,String urlPath){ File file = null...
  • js下载文件简单操作

    万次阅读 2017-05-08 13:37:03
    js下载文件的简单操作案例
  • 在开发中偶尔会遇到需要下载文件的接口,如需文件输入输出流的使用和转换 当接口开发完毕的时候去swagger文档中测试发现结果只是乱码如下图: swagger文档是没法测试下载接口的,虽然我们经常用swagger而且它比较...
  • 前端点击按钮下载文件的方法

    千次阅读 2020-07-17 10:11:53
    1.window.open() 1.创建form表单提交
  • js下载文件并修改文件名称

    万次阅读 2019-09-26 13:47:23
    //url:文件地址 filename:想要修改为的名称 function download(url, filename) { getBlob(url, function (blob) { saveAs(blob, filename); }); }; funct...
  • 看官方文档下载文件永久保存uni.downloadFile和uni.saveFile,文件存放的位置开始时临时的,转成永久的后 它保存的位置在 “内部存储\Android\data\io.dcloud.HBuilder\apps\HBuilder\doc\uniapp_save”里 不方便...
  • 如果遇到Safari浏览器下载文件时没有任何反应,同时也没有任何提示信息,那么可能是你的浏览器禁止了该网站的文件下载权限。 设置方法 “Safari 浏览器”>“偏好设置”,然后点按“网站”。然后选择”下载项...
  • Laravel下载文件文档

    千次阅读 2018-08-10 14:52:00
    Laravel学院提供的相关资源下载 中文文档 Laravel 5.6 中文文档: PDF (兼容 5.5 文档) Laravel 5.3 中文文档: CHM  |  PDF Laravel 5.2 中文文档: CHM  |  PDF Laravel 5.1 中文文档: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 4,511,557
精华内容 1,804,622
关键字:

下载文件