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

在那里你会找到解码函数。

祝你好运。