Przenosimy plik Blob
(obraz) w dół do pliku WWW i renderujemy go do obszaru roboczego na drugim końcu.Ustawianie typu zawartości na obiekcie blobowym
Gdy używam createObjectURL
z kropelka, mam to ostrzeżenie:
Resource interpreted as Image but transferred with MIME type text/plain: "blob:https%3A//example.com/demo".
Tworzymy URL obiektu przy użyciu następującego kodu. Blob jest przesłać za pomocą standardowego websocket z socket.binaryType = "blob";
po stronie klienta:
socket.onmessage = function(e) {
var blob = e.data;
var url = (window.URL || window.webkitURL).createObjectURL(blob);
var image = document.createElement('img');
image.src = url;
}
Jedynym sposobem mogę myśleć, aby rozwiązać ten jest ostrzeżenie, aby utworzyć kopię blob z następującego kodu, ale nie wiem chcesz wprowadzić narzut kopiowania wszystkich danych:
var blob = new Blob([e.data], {
type: 'image/gif'
});
Ta metoda jest wywoływana dziesiątki razy na sekundę.
Wszelkie pomysły na temat ustawiania typu zawartości bloba bez tworzenia duplikatu obiektu Blob
z new Blob
?
Czy możesz pokazać, w jaki sposób wysyłasz dane blob? Zauważ, że właściwość '.binaryType' działa tylko na wiadomość binarną - jeśli wysyłasz tekst, parametr' event.data' zawsze będzie zawierał ciąg znaków. – Bergi
To jest bardzo proste: 'socket.send (message);' na końcu JS węzła. 'message' jest binarnym obiektem blob pochodzącym z aplikacji OSX poprzez SocketRocket (typ' NSData'). Wiadomość jest zdecydowanie binarnym 'blob'. –