nginx http 流下载 断点下载

本文详细介绍了如何使用Java实现HTTP文件流的断点下载功能,通过设置断点续传的开始位置并利用随机访问文件操作来实现前100字节的下载,之后修改参数继续下载剩余部分,直至文件完整下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

public class TestHttpResume {

    public static void main(String[] args) throws Exception {
        BufferedOutputStream output = null;
        BufferedInputStream br = null;
        URL url = new URL("http://IP/test.war");
        HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection(Proxy.NO_PROXY); // 设置 User-Agent
        httpConnection.setRequestProperty("User-Agent", "NetFox"); // 设置断点续传的开始位置
        httpConnection.setRequestProperty("RANGE", "bytes=0-100"); // 获得输入流
        InputStream input = httpConnection.getInputStream();

        RandomAccessFile file = new RandomAccessFile(new File("D://lms3.war"), "rw");
        long nPos = 0;
        // 定位文件指针到 nPos 位置
        file.seek(0);
        byte[] b = new byte[1024];
        int nRead; // 从输入流中读入字节流,然后写到文件中
        while ((nRead = input.read(b)) > 0) {
            file.write(b, 0, nRead);
        }

    }
}

实现前100 的 下载

 

之后修改httpConnection.setRequestProperty("RANGE", "bytes=0-100"); // 获得输入流
 为100-

文件定位到   file.seek(100);

至此文件完结 

实际可动态修改 参数 实现http文件流的 断点下载

Nginx 配置文件用于处理大文件下载时需要特别注意几个关键点,例如设置合适的超时时间、调整缓冲区大小以及启用直接内存传输等功能。下面是一个基本的大文件下载 Nginx 配置示例: ```nginx http { # 设置最大上传文件尺寸(如果涉及上传) client_max_body_size 500M; server { listen 80; server_name example.com; location /download/ { # 开启范围请求支持 (Range Requests),这对于断点续传很重要 add_header 'Accept-Ranges' 'bytes'; # 禁止缓存控制头信息 add_header Cache-Control "no-cache"; # 指定下载目录路径 alias /var/www/download/; # 设定响应体的最大缓冲区大小 types { application/octet-stream bin exe dll iso img apk deb rpm zip rar tar gz bz2 7z; } default_type application/octet-stream; # 调整读取及发送数据的超时时间(按需修改) sendfile on; tcp_nopush on; tcp_nodelay off; keepalive_timeout 65; reset_timedout_connection on; proxy_read_timeout 120s; proxy_send_timeout 120s; client_body_timeout 120s; send_timeout 120s; limit_rate_after 1m; limit_rate 1m; } } } ``` **解释说明:** 1. `client_max_body_size` 定义了客户端可以向服务器上传单个文件的最大限制,默认单位为字节。 2. 使用 `add_header Accept-Ranges bytes` 来开启对 HTTP Range 请求的支持,允许浏览器或用户代理通过指定字节偏移量的方式来分块下载资源,方便实现断点续传功能。 3. 将 `default_type` 设置成 `application/octet-stream`, 这样可以让所有未匹配到 MIME 类型的内容都作为二进制返回给客户端,并提示保存而不是在线打开。 ### 注意事项: - 如果量较大建议优化网络带宽和磁盘 I/O 性能; - 根据实际需求合理调节速率限制参数 (`limit_rate`) 和其他性能相关的指令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值