Websockets 文件上传已损坏(或编码错误)- PHP 和 JS
Websockets file upload is corrupted (or wrongly encoded) - PHP and JS
我正在使用 PHP 和 JS 编写 websocket 脚本,但在保存文件 (img) 时遇到问题
从 JS 发送:
$('#frmChatFile').on("submit",function(event){
event.preventDefault();
var file = document.querySelector('input[type="file"]').files[0];
websocket.send(file, Blob);
});
节省 PHP
socket_recv($newSocketArrayResource, $socketData, 61440, 0);
file_put_contents('test.jpg', $socketData);
它保存了文件,但它已损坏,或编码错误...
上传的图片有点小(几个字节),在hexeditor中没有任何可读的东西(而在原版中我可以阅读header等等)
我错过了什么?有旗帜什么的吗?非常感谢:)
(fopen(w/wb), fwrite, fclose 完全一样)
很可能您的 data/image 编码在 RFC6455 定义的帧中,因此您正在使用 [=21] 在 PHP 中读取该帧=]socket_recv。事实上,所有通过 websocket 从 JS 发送的数据都是以帧编码的。
您必须解码这些帧才能取回数据。
看看https://github.com/napengam/phpWebSocketServer/blob/master/server/RFC6455.php
在那里你会找到解码函数。
祝你好运。
我正在使用 PHP 和 JS 编写 websocket 脚本,但在保存文件 (img) 时遇到问题
从 JS 发送:
$('#frmChatFile').on("submit",function(event){
event.preventDefault();
var file = document.querySelector('input[type="file"]').files[0];
websocket.send(file, Blob);
});
节省 PHP
socket_recv($newSocketArrayResource, $socketData, 61440, 0);
file_put_contents('test.jpg', $socketData);
它保存了文件,但它已损坏,或编码错误...
上传的图片有点小(几个字节),在hexeditor中没有任何可读的东西(而在原版中我可以阅读header等等)
我错过了什么?有旗帜什么的吗?非常感谢:)
(fopen(w/wb), fwrite, fclose 完全一样)
很可能您的 data/image 编码在 RFC6455 定义的帧中,因此您正在使用 [=21] 在 PHP 中读取该帧=]socket_recv。事实上,所有通过 websocket 从 JS 发送的数据都是以帧编码的。
您必须解码这些帧才能取回数据。
看看https://github.com/napengam/phpWebSocketServer/blob/master/server/RFC6455.php
在那里你会找到解码函数。
祝你好运。