精华内容
下载资源
问答
  • 这应该工作,我测试它,它适用于我:void downloadFromUrl(URL url, String localFilename) throws IOException {InputStream is = null;FileOutputStream fos = null;try {URLConnection urlConn = url.open...

    这应该工作,我测试它,它适用于我:

    void downloadFromUrl(URL url, String localFilename) throws IOException {

    InputStream is = null;

    FileOutputStream fos = null;

    try {

    URLConnection urlConn = url.openConnection();//connect

    is = urlConn.getInputStream(); //get connection inputstream

    fos = new FileOutputStream(localFilename); //open outputstream to local file

    byte[] buffer = new byte[4096]; //declare 4KB buffer

    int len;

    //while we have availble data, continue downloading and storing to local file

    while ((len = is.read(buffer)) > 0) {

    fos.write(buffer, 0, len);

    }

    } finally {

    try {

    if (is != null) {

    is.close();

    }

    } finally {

    if (fos != null) {

    fos.close();

    }

    }

    }

    }

    如果你想让它在后台运行,只需在一个线程中调用它:

    Thread download = new Thread(){

    public void run(){

    URL url= new URL("http://overpass-api.de/api/interpreter?data=area%5Bname%3D%22Hoogstade%22%5D%3B%0A%28%0A++node%28area%29%3B%0A++%3C%3B%0A%29+%3B%0Aout+meta+qt%3B");

    String localFilename="mylocalfile"; //needs to be replaced with local file path

    downloadFromUrl(url, localFilename);

    }

    };

    download.start();//start the thread

    展开全文
  • 下载文件时文件名乱码和文件大小未知 快速解决文件名乱码 快速解决文件大小未知 完整项目示例 参考资料 下载文件时文件名乱码和文件大小未知 这个问题引发自标准兼容问题 FireFox 对规范要求严格, 而其他浏览器...

    下载文件时文件名乱码和文件大小未知

    这个问题引发自标准兼容问题
    FireFox 对规范要求严格, 而其他浏览器相对宽容, 所以其他浏览器会兼容, 而FireFox则不做处理
    解决方案是添加 Content-Disposition 响应头

    快速解决文件名乱码

    传统 File 类型文件写法( java 1.4 ~ java 6 ):

    File file = getFile();
    String filename = java.net.URLEncoder.encode(file.getName(), "UTF-8");
    response.setHeader("Content-Disposition", "attachment;filename*=utf-8'zh_cn'" + filename);
    

    新IO Path 类型文件写法( java 7 ~ java 13 ):

    Path file = Paths.get("E:\\Downloads\\测试文件.pdf");
    String filename = file.getFileName().toString();
    filename = URLEncoder.encode(filename, StandardCharsets.UTF_8.displayName());
    String disposition = "attachment;filename*=utf-8'zh_cn'" + filename;
    response.addHeader("Content-Disposition", disposition);
    

    重点

    重点在这一行:

     "attachment;filename*=utf-8'zh_cn'" + filename
    

    filename*=utf-8'zh_cn' 后面直接加文件名

    快速解决文件大小未知

    传统IO

    File file = new File("E:\\Downloads\\测试文件.pdf");
    long fileSize = file .length();
    response.setContentLength((int) fileSize);
    

    新IO

    Path file = Paths.get("E:\\Downloads\\测试文件.pdf");
    long fileSize = Files.size(file);
    response.setContentLength((int) fileSize);
    

    重点

    给 response 设置 Content-Length 头就可以解决这个问题

    response.setContentLength((int) fileSize);
    

    完整类代码

    package cc.momas;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.net.URLEncoder;
    import java.nio.charset.StandardCharsets;
    import java.nio.file.Files;
    import java.nio.file.Path;
    import java.nio.file.Paths;
    
    /**
     * @author Sod-Momas
     * @since 2020.01.16
     **/
    @WebServlet(value = "/download")
    public class DownloadServlet extends HttpServlet {
        @Override
        protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 解决乱码,一般写在过滤器 filter里
            request.setCharacterEncoding(StandardCharsets.UTF_8.displayName());
            response.setCharacterEncoding(StandardCharsets.UTF_8.displayName());
            response.setContentType("text/html;charset=utf-8");
    
            // 获取文件
            Path file = Paths.get("E:\\Downloads\\测试文件.pdf");
            // 检测文件是否存在
            if (Files.notExists(file)) {
                response.getWriter().write("指定文件不存在:" + file.toAbsolutePath());
                return;
            }
    
            // 获取文件名
            String filename = file.getFileName().toString();
            // 获取文件大小,单位是byte
            long fileSize = Files.size(file);
    
            // 将文件名URL编码
            filename = URLEncoder.encode(filename, StandardCharsets.UTF_8.displayName());
            // 添加触发下载的前缀
            // 规范参考 : Content-Disposition https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Content-Disposition
            String disposition = "attachment;filename*=utf-8'zh_cn'" + filename;
    
            // 添加 Content-Disposition 告诉浏览器数据展现的方式是附件下载,并且提供文件名
            response.addHeader("Content-Disposition", disposition);
            // 添加 Content-Length 告诉浏览器数据的长度,单位是 byte
            response.setContentLength((int) fileSize);
            // 添加 Content-Type 告诉浏览器这是一个二进制流
            response.setContentType("application/octet-stream");
    
            // 把文件从本地复制到 response 输出流输出给前端
            Files.copy(file, response.getOutputStream());
        }
    }
    
    

    完整项目示例

    请访问我的码云仓库获取最新代码:

    https://gitee.com/Sod-Momas/servlet-download-example

    参考资料

    博客

    MDN

    • Content-Disposition Content-Disposition 响应头的作用
    • Content-Type Content-Type 实体头的作用
    • Content-Length Content-Length 是一个实体消息首部,用来指明发送给接收方的消息主体的大小,即用十进制数字表示的八位元组的数目。

    RFC

    展开全文
  • δ知大小的图片在已知容器中的垂直居中和水平居中,一直是困扰大家的问题,今天西西带给大家一个简单的实现办法,详见css文件,此代码兼容各个浏览器,源码库推荐下载
  • 删除解压包中的hiredis目录,重新下载。 git clone https://github.com/redis/hiredis.git cd hiredis make make install 回到 redis/目录,执行 make

    删除解压包中的hiredis目录,重新下载

    git clone https://github.com/redis/hiredis.git
    cd hiredis
    make
    make install

    回到 redis/ 目录,执行 make

    展开全文
  • 同事用腾讯微云把照片传给我,但是我死活下载不下来,总是突然停止,然后提示——未知大小下载失败。 用过的方法 在网页版上下载——出现问题:总是突然停止,提示“未知大小下载失败” 让朋友先保存文件,再把...

    如何解决:微云下载文件总是失败

    问题描述

    跑码需要用很多张照片作为数据集,需要先将这些照片保存在本地。同事用腾讯微云把照片传给我,但是我死活下载不下来,总是突然停止,然后提示——未知大小,下载失败。

    用过的方法

    1. 在网页版上下载——出现问题:总是突然停止,提示“未知大小,下载失败”
    2. 让朋友先保存文件,再把文件发给我(以“链接”的形式),再通过朋友给的链接下载——出现问题:看不到下载的进度,而且下载的zip文件会突然消失。

    解决方法

    1. 下载了“腾讯微云”PC版
    2. 购买了一个微云会员
    3. 在这个app上作为会员下载,一是能看到下载的进度,二是能较快地下载
    展开全文
  • 软件大小:2430K 下载地址:http://www.virusfree.com.cn/file/VFSetup.exe 无毒空间是一个设计思路独特的防范系统,小王以前测试过这款软件(对一款安全软件——无毒空间的测试),它使用纯白名单的核心技术,...
  • 由于苹果这次没有给出描述文件,想要尝鲜的朋友需要下载固件才能升级,固件大小将近 4GB,这也证明了本次更新内容之多。我们在第一时间给 iPhone 升级了 iOS 13 beta 版,给大家介绍一下那些发布会上没有提到的功能...
  • 我们需要将数据的下载进度在SwiftUI界面中反映出来,当下载数据大小已知时我们显示对应的下载进度百分比,若下载大小未知,我们显示一个无限滚动的(红色)进度条。 通过本文的学习,您将完全掌握以下内容: - 使用...
  • 下载进度条演示文件大小未知长度已经下载0完成进度0%//文件长度var filesize=0;function $(obj) {return document.getElementById(obj);}//设置文件长度function setFileSize(fsize) {filesize=fsize;$("filesize")....
  • 之前所用的下载文件方法总是出现下载文件未知大小的问题,百思不得其解,最后使用该方法后,问题解决。  // 根目录为resources  private static final String filePath = "/excel/xxx.xlsx"; /** * 下载...
  • 浏览器与服务器建立连接后,通过Asp.Net...,以此告诉浏览器待下载文件大小,这样浏览器就知道它要下载的文件有多大了,利用这个参照值来避免因文件大小未知而导致中途下载失败。 转载于:https://www.cnblogs.co...
  • 软件语言:简体中文 软件平台:for win7 文件大小未知
  • 软件语言:简体中文 软件平台:for win7 文件大小未知
  • 软件语言:简体中文 软件平台:for win7 文件大小未知
  • 软件语言:简体中文 软件平台:for win2k/xp 文件大小未知
  • 软件语言:简体中文 软件平台:Win2000/WinXP/Win2003 文件大小未知
  • 软件语言:简体中文 软件平台:Win_64/Win8.1_64/Win10_64 文件大小未知
  • 软件语言:简体中文 软件平台:Intel英特尔芯片组驱动for win2k/xp 文件大小未知
  • 软件语言:简体中文 软件平台:Intel英特尔芯片组驱动for win2k/xp 文件大小未知
  • 软件语言:简体中文 软件平台:Intel英特尔芯片组驱动for win2k/xp 文件大小未知
  • 软件语言:简体中文 软件平台:Intel英特尔芯片组驱动for win2k/xp 文件大小未知
  • 软件语言:简体中文 软件平台:Intel英特尔芯片组驱动for win2k/xp 文件大小未知
  • 软件语言:简体中文 软件平台:Win7/Win8.1/Win10 文件大小未知 软件描述:相关驱动程序

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 201
精华内容 80
关键字:

下载未知大小