HTTP分片下载文件代码

function download($sourceFile, $outFile = ‘‘) {

        //Begin writing headers
        header("Cache-Control:");
        header("Cache-Control: public");

        //设置输出浏览器格式
        header("Content-Type: application/force-download");
        header("Content-Disposition: attachment; filename=" . $outFile);
        header("Accept-Ranges: bytes");

        header("Content-Type: application/force-download");
        header("Cache-Control:");
        header("Cache-Control: public");
        header("Content-Disposition: attachment; filename=" . $outFile);
        header("Accept-Ranges: bytes");
        $size = filesize($sourceFile);

        //如果有$_SERVER[‘HTTP_RANGE‘]参数
        $httprange = $_SERVER[‘HTTP_RANGE‘];
        if (!$httprange) {
            // 断点后再次连接 $_SERVER[‘HTTP_RANGE‘] 的值 bytes=4390912-
            list ($a, $range) = explode("=", $_SERVER[‘HTTP_RANGE‘]);
            //if yes, download missing part

            $size2 = $size ; //文件总字节数

            $new_length = $size2 - $range; //获取下次下载的长度
            header("HTTP/1.1 206 Partial Content");
            header("Content-Length: $new_length"); //输入总长
            header("Content-Range: bytes {$range}-{$size2}/{$size}"); //Content-Range: bytes 4908618-4988927/4988928 95%的时候
        } else {
            //第一次连接
            $size2 = $size - 1;
            header("Content-Range: bytes 0-{$size2}/{$size}"); //Content-Range: bytes 0-4988927/4988928
            header("Content-Length: " . $size); //输出总长
        }
        //打开文件
        $fp = fopen("{$sourceFile}", "rb");
        //设置指针位置
        fseek($fp, $range);
        //虚幻输出
        ob_clean();
        while (!feof($fp)) {
            //设置文件最长执行时间
            set_time_limit(0);
            print (fread($fp, 1024 * 1)); //输出文件
            flush(); //输出缓冲
            ob_flush();
        }
        fclose($fp);
        return true;
    }
时间: 2024-10-08 08:15:58

HTTP分片下载文件代码的相关文章

C# 从服务器下载文件代码

一.//TransmitFile实现下载 protected void Button1_Click(object sender, EventArgs e) { /* 微软为Response对象提供了一个新的方法TransmitFile来解决使用Response.BinaryWrite 下载超过400mb的文件时导致Aspnet_wp.exe进程回收而无法成功下载的问题. 代码如下: */ Response.ContentType = "application/x-zip-compressed&q

php 下载文件代码段

/** * 下载 * @param [type] $url [description] * @param string $filename [description] * @return [type] [description] */ private function downLoad($url,$pnum){ if ($url == "") return false; ob_start(); //打开浏览器的缓冲区 readfile($url); //读入缓冲区 $file = ob

php下载文件代码

$file=fopen('文件地址',"r"); header("Content-Type: application/octet-stream"); header("Accept-Ranges: bytes"); header("Accept-Length: ".filesize('文件地址')); header("Content-Disposition: attachment; filename=文件名称"

TreadAPP-使用线程下载文件

package main; /** * Created by lxj-pc on 2017/6/27. */public class TreadApp {//volatile 线程间共享变量 private static volatile boolean isExit=false;//static成员不能访问非static成员 public static void main(String[] args) { //下载一个文件 启动线程 ,线程池使用, //启动线程 下载文件 1.线程自己实现方法

Servlet下载文件

1.获取项目根目录: @Override public void init() throws ServletException { // 获取项目在文件系统中的根目录 string = getServletContext().getRealPath(File.separator); } init()方法在整个Servlet生命周期内只会被加载一次,用于数据的初始化. 2.下载文件代码: @Override protected void doGet(HttpServletRequest reque

springboot ResponseEntity<byte[]> 下载文件乱码

spring3以后添加httpMessageConverter消怎机制.其中可以通过org.springframework.http.ResponseEntity<byte[]>对象下载文件. pom文件如下: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocat

GridVIew中下载文件的方法探讨,方法(7)最佳。

(1)使用Button下载 在GridView属性中添加: OnRowCommand="GridView1_RowCommand" 在GridView的<Column>中添加: <asp:ButtonField runat="server" Text="下载" HeaderText="下载" ButtonType="Button" CommandName="DownLoad_Cl

Android OkHttp + Retrofit 下载文件与进度监听

本文链接 下载文件是一个比较常见的需求.给定一个url,我们可以使用URLConnection下载文件. 使用OkHttp也可以通过流来下载文件. 给OkHttp中添加拦截器,即可实现下载进度的监听功能. 使用流来实现下载文件 代码可以参考:https://github.com/RustFisher/android-Basic4/tree/master/appdowloadsample 获取并使用字节流,需要注意两个要点,一个是服务接口方法的 @Streaming 注解,另一个是获取到Respo

java文本、表格word转换生成PDF加密文件代码下载

原文:java文本.表格word转换生成PDF加密文件代码下载 代码下载地址:http://www.zuidaima.com/share/1550463239146496.htm 这个实现了PDF加密功能,和一些基本的问题. java文本.表格word转换生成PDF加密文件代码下载,布布扣,bubuko.com