我已经看到围绕这个主题的其他线索,但他们没有多少帮助。
我有一个简单的要求。 我需要创建一个简单的应用程序,允许用户从服务器上传和下载大文件(400 - 1500 MB)。 每个用户都有他的登录信息,大文件需要安全上传和下载。
使用PHP实现这一目标的最佳方法是什么? 我应该注意哪些陷阱?
谢谢, 阿米特
答案 0 :(得分:2)
PHP 支持 upload file streaming。
您可以使用stream_open()
&等功能。 stream_write()
。
我还找到了{strong> PEAR 的方式on the web,但我从未尝试过这样做:
这是作者所说的:
PEAR中有另一种方法可以将文件传输到server1 服务器2。 PEAR有HTTP包用于上传文件。
HTTP_Request支持GET / POST / HEAD / TRACE / PUT / DELETE,Basic 身份验证,代理,代理身份验证,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!";
}
}
?>
答案 1 :(得分:1)
转移是否必须通过http完成?否则,当您选择在站点上传图像并使用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);
但不建议您使用所讨论文件的大小。 Web服务器连接将在很长一段时间内打开,并且很难恢复中止的上传。
所以我会考虑让客户端应用程序处理实际的上传。您可以将其作为Java-applet或CLI / GUI应用程序制作,用户必须先下载才能上传文件。