流媒体文件fromFTP,让用户下载它在同一时间(Streaming a file fromFTP

2019-09-16 16:15发布

我创建一个备份系统,在备份将全自动生成的,所以我会在不同的服务器上存储备份,但是当我想下载它们,我希望链接是一次性的链接,这并不难作,然而,为了使这个安全的,我想通过HTTP存储文件,所以他们不能入店其他服务器上。

因此,我会做的是通过ftp Connet的,将文件下载到主服务器,那么目前它下载和deleteit,但是如果备份大,这将花费很长的时间,有没有办法从FTP流它不显示谁是downloadiong的实际位置,而不是将其存储在服务器上的人吗?

Answer 1:

下面是一个使用非常简单的例子卷曲 。 它指定一个读回调时,数据可从FTP读取将被调用,并且将数据输出到浏览器服务同时下载到客户端,而FTP交易发生与备份服务器。

这是一个非常基本的〔实施例,您可以扩大。

<?php

// ftp URL to file
$url = 'ftp://ftp.mozilla.org/pub/firefox/nightly/latest-firefox-3.6.x/firefox-3.6.29pre.en-US.linux-i686.tar.bz2';

// init curl session with FTP address
$ch = curl_init($url);

// specify a callback function for reading data
curl_setopt($ch, CURLOPT_READFUNCTION, 'readCallback');

// send download headers for client
header('Content-type: application/octet-stream');
header('Content-Disposition: attachment; filename="backup.tar.bz2"');

// execute request, our read callback will be called when data is available
curl_exec($ch);


// read callback function, takes 3 params, the curl handle, the stream to read from and the maximum number of bytes to read    
function readCallback($curl, $stream, $maxRead)
{
    // read the data from the ftp stream
    $read = fgets($stream, $maxRead);

    // echo the contents just read to the client which contributes to their total download
    echo $read;

    // return the read data so the function continues to operate
    return $read;
}

见curl_setopt()有关更多信息CURLOPT_READFUNCTION选项。



文章来源: Streaming a file fromFTP and letting user to download it at the same time
标签: php ftp