PHP 进程文件,然后再将其上传到 Amazon s3


PHP process file before uploading it to amazon s3

我需要在将图像上传到 Amazon s3 之前获取图像的直方图。 直方图工作正常 升级工作正常,但我无法在上传前处理图像文件。

我不想将图像保存到本地硬盘并对其进行处理并删除上传到 s3 的本地文件。

除此之外,您知道任何解决方案吗?我的直方图制作器功能正在使用本地文件。

谢谢

将文件上传到 PHP 时,它将始终在 PHP 脚本开始执行之前保存到磁盘(请参阅 php.ini 中的upload_tmp_dir)。最接近内存上传的事情是将虚拟硬盘用于该临时上传位置。

您可以通过客户端的浏览器将其直接上传到 S3,而不是通过 PHP 上传文件,但我真的看不出这会对您有什么好处,因为您需要在某个时候将其下载到您的服务器以进行直方图处理。

1.您可以使用 PUT 方法发送文件对象或类似内容。服务器端需要进程"php:/input"来读取和写入文件。示例代码:

<?php 
 $handle= fopen("php://input", "r");
 $fileToWrite = fopen('test.txt','w');
  while ($data = fread($handle, 1024))
        fwrite($fileToWrite ,$data);
 fclose($handle);
 fclose($fileToWrite);
?>

这段代码在 apache-windows 上完美运行(我认为与 Linux 的结果相同),但不适用于其他 web 服务器,因为服务器总是在发送到 PHP 后端之前缓冲客户端请求(我已经用 nginx、lighttpd 进行了测试)以获得更好的性能


2,使用websocket和FileReader!

我认为这是不错的选择,使用 websocket 解决了问题。但是如果你想开发一个PHP-websocket-server,就会有一个新的问题。你应该使用 node.js for websocket。祝你好运:)