jkuchar/filedownloader

该插件使文件可控下载变得简单易行。它支持客户端重连、分段下载、超过4GB的文件、自动检测MIME类型和文件名中的特殊字符。如果您需要控制下载速度,那么您就找到了正确的地方。

v2.0.0-rc 2017-03-27 18:48 UTC

README

Code Climate

寻找新的维护者 请使用 Nette\Application\Responses\FileResponse 代替。或者高速解决方案 X-Accel/NGINXX-Sendfile/Apache

该插件使文件可控下载变得简单易行。它支持 客户端重连分段下载超过4GB的文件、自动 MIME类型检测文件名中的特殊字符。如果您需要 控制下载速度,那么您就找到了正确的地方。

安装

只需通过调用:composer require jkuchar/filedownloader 安装此插件。

或要安装示例,请继续到 示例仓库。 (一键设置)

基本用法:只想下载文件

从它的命名空间导入FileDownloader

use FileDownloader\FileDownload;

然后使用

$filedownload = new FileDownload;
$filedownload->sourceFile = "source.txt";
$filedownload->download();

// or the same thing using fluent-interface
FileDownload::getInstance()
	->setSourceFile("source.txt")
	->download();

高级用法:高级特性的组合

$filedownload = new FileDownload();
$filedownload->sourceFile = "source.txt";

// apply speed limit (in this case in bytes per second)
$filedownload->speedLimit = 5 * FDTools::BYTE;

// set filename that will be seen by user
$filedownload->transferFileName = "test.txt";

// set mime-type manually (you normally do not need to so this!)
$filedownload->mimeType = "application/pdf";

// show this file directly in browser (do not download it)
$filedownload->contentDisposition =	FileDownload::CONTENT_DISPOSITION_INLINE;

$filedownload->download();

使用流畅接口进行相同的事情

FileDownload::getInstance()
	->setSourceFile("source.txt")
	// Nastavíme rychlost odesílání v bytech
	->setSpeedLimit(5*FDTools::BYTE)
	->setTransferFileName("test.txt")
	->setMimeType("application/pdf")
	->setContentDisposition(
		FileDownload::CONTENT_DISPOSITION_INLINE
	)
	->download();

回调函数

当... ...下载被取消... ...下载失败... ...下载成功等。

$filedownload->onAbort[] = "onAbortHandlerFunction"; // here is everything callable accepted

// fluent-interface
FileDownload::getInstance()->addAbortCallback("onAbortHandlerFunction")

// Callback parameters are always the same
function onAbort(FileDownload $download,IDownloader $downloader){
	/* ... */
}

在仓库中有一个示例 表单,它会将所有调用的回调函数打印到屏幕上。

技术要求

有两个下载器 AdvancedDownloader 需要设置无限时间限制(会自动尝试这样做)。作为后备,有 NativePHPDownloader 可用,这个下载器在某些PHP安装中需要的内存与文件大小一样多。(PHP错误:如果您找到了解决方案,请告诉我)

回调函数、速度控制和对于大文件的支持仅适用于 AdvancedFileDownloader

对大于4GB的大文件的支持

  • 这是通过 cURL 扩展 实现的,所以请务必启用它。即使没有CURL,插件也可以工作,但效率非常低。
  • 对大于4GB文件的支持还需要将 BigFileTools 添加到您的库中(使用composer这样做)