[英]PHP: Best way to Uploading and download large files
我已经看到有关此主题的其他线程,但它们并没有太大帮助。
我有一个简单的要求。 我需要创建一个简单的应用程序,允许用户从服务器上传和下载大文件(400 - 1500 MB)。 每个用户都有自己的登录名,并且需要安全地上传和下载大文件。
使用 PHP 实现这一目标的最佳方法是什么? 我应该注意哪些陷阱?
谢谢,阿米特
PHP支持上传文件流。
您可以使用stream_open()
和stream_write()
等函数。
我还在web 上找到了一种使用PEAR这样做的方法,但我从未尝试过:
这是作者所说的:
PEAR 中有另一种方法可以将文件传输到 server1 到 server2。 PEAR 有 HTTP package 用于上传文件。
HTTP_Request 支持 GET/POST/HEAD/TRACE/PUT/DELETE、Basic authentication、Proxy、Proxy Authentication、SSL、文件上传等。
<?php
require_once "HTTP/Request.php";
$req =& new HTTP_Request("http://domain.com/upload");
$req->setBasicAuth("login", "pass");
$req->setMethod(HTTP_REQUEST_METHOD_POST);
$result = $req->addFile("data", "/home/svnlabs.mp4");
if (PEAR::isError($result)) {
echo "Error occurred during file upload!";
} else {
$response = $req->sendRequest();
if (PEAR::isError($response)) {
echo "Error occurred during file upload!";
} else {
echo "File successfully uploaded!";
}
}
?>
是否必须通过 http 进行传输? 否则,当您 select 在您的站点上上传图像并使用 FTP、SFTP 或类似的东西处理相关文件的上传时,您可能会触发客户端应用程序。 这可能是实现良好性能而不会使网络服务器陷入困境的最佳方式。
您可以将允许的文件大小调大并让脚本运行直到完成。
ini_set('upload_max_filesize', '1024M');
ini_set('post_max_size', '1024M');
ini_set('max_input_time', 0);
ini_set('max_execution_time', 0);
但是对于您正在谈论的文件的大小,不建议这样做。 网络服务器连接将打开很长时间,并且中止的上传将难以恢复。
所以我会考虑让客户端应用程序处理实际上传。 您可以将其制作为 Java 小程序或 CLI/GUI 应用程序,用户必须先下载才能上传文件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.