PHP 文件从客户端通过服务器流式传输到客户端

标签 php file-upload streaming download

问题

是否可以通过 PHP 流式传输上传文件,以便其他客户端可以在第一个客户端上传时下载它?

我不想将文件永久保存在服务器上。我该怎么做?

为什么选择 PHP?

下载客户端不需要额外的软件来获取流。我认为最简单的方法是网络浏览器。

最佳答案

这是可能的,但实现起来会很尴尬。主要障碍是多部分 POST 请求的处理被硬编码到 PHP 中。在调用您的脚本之前,它将始终将文件保存到临时位置。一种解决方法是将 PHP-CLI 设置为 CGI 脚本。由于 PHP 的 CLI 版本不支持 HTTP,因此您可以使用它来处理传入的数据。

.CGI 文件看起来像这样:

#!/usr/local/src/php-4.3.4/sapi/cli/php
<?php

// populate $_GET
parse_str($_ENV['QUERY_STRING'], $_GET);

// get the session id from the cookie
parse_str($_ENV['HTTP_COOKIE'], $_COOKIE);
$session_name = ini_get("session.name");
$session_id = $_COOKIE[$session_name];

// get the length of the request body
$length = (int) $_ENV['CONTENT_LENGTH'];

// read the POST data
$stdin = fopen("php://stdin", "rb");

while($chunk = fread($stdin, 4096)) {
    [...]
}

?>

解析 RFC1867 请求非常重要。我想,协调上传方和下载方也会相当棘手。

关于PHP 文件从客户端通过服务器流式传输到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12916956/

相关文章:

tomcat - 如何在 Tomcat 上运行的 servlet 过滤器中使用 HttpServletRequest#getParts()?

linux - 如何将我的视频集流式传输到 inet

linux - 我可以选择哪个 DVB-T 音频 channel VLC 流吗?

php - 如何使用 Laravel 和 jwt-auth 保护 api 路由免受非管理员用户的攻击

php - 文件上传/移动温度在 nginx 上不起作用

javascript - 我需要在 Chrome 中上传一个文件,并且需要在同一个请求中**发布**一些参数

streaming - 通过客户端 XHR 打开 Soundcloud Track 的 stream_url?

php 事件日志以查看正在执行哪些文件

php - Laravel 路线似乎不起作用

javascript - 上传文件而不提交的脚本