JavaScript-通过websocket[guacamole]将ArrayBuffer数据发送到后端
我需要使用guacamole公共js库通过websocket将数据(文件)发送到我的guacamole后端 情况如下:JavaScript-通过websocket[guacamole]将ArrayBuffer数据发送到后端,javascript,websocket,guacamole,Javascript,Websocket,Guacamole,我需要使用guacamole公共js库通过websocket将数据(文件)发送到我的guacamole后端 情况如下: function drop(ev){ ev.preventDefault(); if (ev.dataTransfer.items) { for (var i = 0; i < ev.dataTransfer.items.length; i++) { if (ev.dataTransfer.items[i].kind ===
function drop(ev){
ev.preventDefault();
if (ev.dataTransfer.items) {
for (var i = 0; i < ev.dataTransfer.items.length; i++) {
if (ev.dataTransfer.items[i].kind === 'file') {
var file = ev.dataTransfer.items[i].getAsFile();
var reader = new FileReader();
reader.onloadend = function fileContentsLoaded (e){
const stream = guac.createFileStream(file.type, file.name);
var bufferWriter = new Guacamole.ArrayBufferWriter(stream)
bufferWriter.sendData(reader.result)
bufferWriter.sendEnd()
};
reader.readAsArrayBuffer(file);
}
}
} else {
for (var i = 0; i < ev.dataTransfer.files.length; i++) {
console.log(ev.dataTransfer.files[i].name);
}
}
}
功能下降(ev){
ev.preventDefault();
if(ev.dataTransfer.items){
对于(变量i=0;i
后端也接收数据,我可以在远程服务器上打开文件,该文件由guacd发送到远程服务器,但该文件只包含某种二进制数据
有人已经管理好了吗?或者知道我如何发送数据吗?如果您在后端使用Node.js,请尝试使用
Buffer.toString
或Buffer处理它。从我已经找到了一个解决方案
鳄梨酱公共js库已经提供了一个将缓冲区发送到后端的函数
我的“drop”函数现在看起来如下所示:
function drop(ev){
ev.preventDefault();
if (ev.dataTransfer.items) {
for (var i = 0; i < ev.dataTransfer.items.length; i++) {
if (ev.dataTransfer.items[i].kind === 'file') {
var file = ev.dataTransfer.items[i].getAsFile();
var reader = new FileReader();
reader.onloadend = function fileContentsLoaded (e){
const stream = guac.createFileStream(file.type, file.name);
var bufferWriter = new Guacamole.ArrayBufferWriter(stream)
bufferWriter.sendData(reader.result)
bufferWriter.sendEnd()
};
reader.readAsArrayBuffer(file);
}
}
} else {
for (var i = 0; i < ev.dataTransfer.files.length; i++) {
console.log(ev.dataTransfer.files[i].name);
}
}
}
功能下降(ev){
ev.preventDefault();
if(ev.dataTransfer.items){
对于(变量i=0;i
是的,我正在后端使用节点。我正在使用GuacamoleLite库,它通常会自动处理流量,并将所有内容转发给guacd代理,所以我不知道在库中的何处进行更改。。。