Ich habe zwei iPhones, die JPG-Dateien zu Node.js Server über WebSockets mit Hilfe von socket.io wie dieseFilereader Puffer unterscheidet sich von verschiedenen Safari
var reader = new FileReader();
reader.onload = function() {
socket.emit(
'chat_file',
{
body: reader.result
}
);
};
reader.readAsArrayBuffer(uploadedFile);
Problem laden, wenn alle modernen Browser-Upload wie folgt aussieht auf node.js Seite
Oct 04 11:01:01 test-chat1.bnk.ef.lan node[30130]: { name: 'image2.jpg',
Oct 04 11:01:01 test-chat1.bnk.ef.lan node[30130]: body: <Buffer ff d8 ff e0 00 10 4a 46 49 46 00 01 01 01 00 f0 00 f0 00 00 ff db 00 43 00 03 02 02 03 02 02 03 03 03 03 04 03 03 04 05 08 05 05 04 04 05 0a 07 07 06 ... >,
Oct 04 11:01:01 test-chat1.bnk.ef.lan node[30130]: size: 95712 } }
Datei-Körper ist ein Puffer, auf alten iPhone 4, mit Safari-Version 8 ich bin immer
Oct 04 11:00:25 test-chat1.bnk.ef.lan node[30088]: { room: '1','image.jpg', body: { byteLength: 889942 }, size: 889942 } }
hier Körper-Typ keinen Puffer ist, habe ich Buffer.alloc versucht() und Buffer.from() aber kein Glück (logisch), bei von ich bin immer
TypeError: First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.
und bei alloc ist es
TypeError: Data must be a string or a buffer
ps Auf Client-Seite auf alte und neue Version von Safari reader.result ist typeof Arraybuffer aber alte Safari hat Scheibe Methode darin
pps Aber ArrayBuffers Körper unterschiedlich sind (alte Safari auf die rechte Seite)