我需要在将图像上传到 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。祝你好运:)