jkuchar / filedownloader
该插件使文件可控下载变得简单易行。它支持客户端重连、分段下载、超过4GB的文件、自动检测MIME类型和文件名中的特殊字符。如果您需要控制下载速度,那么您就找到了正确的地方。
v2.0.0-rc
2017-03-27 18:48 UTC
Requires
- php: >= 5.3.0
- jkuchar/bigfiletools: >=1.1.0 <=2.0
- nette/application: ~2.4
- nette/deprecated: ^2.4
This package is auto-updated.
Last update: 2024-09-23 19:48:35 UTC
README
寻找新的维护者 请使用 Nette\Application\Responses\FileResponse 代替。或者高速解决方案 X-Accel/NGINX 或 X-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这样做)