php websocket 传文件
时间: 2023-11-27 08:00:59 浏览: 162
PHP WebSocket 可以通过传输二进制数据来实现传输文件的功能。以下是一个简单的示例代码:
服务端代码:
```php
<?php
$host = '0.0.0.0'; // 监听的IP地址
$port = 8080; // 监听的端口号
$server = new \swoole_websocket_server($host, $port);
$server->on('open', function ($server, $request) {
echo "New connection established: {$request->fd}\n";
});
$server->on('message', function ($server, $frame) {
$fileContent = $frame->data; // 获取文件内容
$fileName = 'received_file.txt'; // 保存的文件名
file_put_contents($fileName, $fileContent); // 保存文件
});
$server->on('close', function ($server, $fd) {
echo "Connection closed: {$fd}\n";
});
$server->start();
?>
```
客户端代码:
```javascript
<script>
var ws = new WebSocket('ws://localhost:8080');
ws.onopen = function(event) {
var fileInput = document.getElementById('uploadFile');
fileInput.onchange = function(event) {
var file = event.target.files[0];
var reader = new FileReader();
reader.onload = function(event) {
ws.send(event.target.result); // 发送文件内容到服务端
alert('文件上传成功');
};
reader.readAsArrayBuffer(file);
};
};
</script>
<input type="file" id="uploadFile" name="file"/>
```
客户端使用 `WebSocket` 与服务端建立连接后,通过监听文件输入框的 `change` 事件来读取文件内容,并通过 `WebSocket` 连接将文件内容发送给服务端。服务端收到文件内容后可以选择保存到文件系统中。
请注意,上述示例只是一个简单的演示,实际应用中还需要进行错误处理、安全验证等。
阅读全文