【问题标题】:Websockets file upload is corrupted (or wrongly encoded) - PHP and JSWebsockets 文件上传已损坏(或编码错误) - PHP 和 JS
【发布时间】:2021-09-06 13:03:54
【问题描述】:

我正在使用 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 中没有什么可读的(而在原始我可以读取标题等)

我错过了什么?有什么flag什么的?非常感谢:)

(fopen (w/wb), fwrite, fclose 完全一样)

【问题讨论】:

    标签: javascript php file websocket save


    【解决方案1】:

    您的数据/图像很可能被编码在 RFC6455 定义的帧中,因此您在 PHP 中使用 socket_recv 读取该帧。事实上,所有从 JS 通过 websocket 发送的数据都是以帧编码的。

    您必须解码这些帧才能取回数据。

    看看https://github.com/napengam/phpWebSocketServer/blob/master/server/RFC6455.php

    在那里你会找到解码功能。

    祝你好运。

    【讨论】:

    • 这解释了很多 :) 谢谢 Heinz :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-24
    • 2018-06-21
    • 2023-03-20
    • 2017-08-29
    • 2020-07-12
    • 1970-01-01
    相关资源
    最近更新 更多