繁体   English   中英

PHP:上传和下载大文件的最佳方式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM