Chúng tôi đang chuyển một hình ảnh Blob
(hình ảnh) xuống một websocket và hiển thị nó lên canvas ở đầu kia.Đặt loại nội dung trên blob
Khi tôi sử dụng createObjectURL
với blob, tôi nhận được cảnh báo này:
Resource interpreted as Image but transferred with MIME type text/plain: "blob:https%3A//example.com/demo".
Chúng tôi tạo ra các URL đối tượng sử dụng đoạn mã sau. Blob được gửi qua một WebSocket tiêu chuẩn với socket.binaryType = "blob";
trên các mặt hàng:
socket.onmessage = function(e) {
var blob = e.data;
var url = (window.URL || window.webkitURL).createObjectURL(blob);
var image = document.createElement('img');
image.src = url;
}
Cách duy nhất tôi có thể nghĩ để giải quyết cảnh báo này là để tạo ra một bản sao của blob với đoạn mã sau, nhưng tôi không muốn giới thiệu chi phí sao chép tất cả dữ liệu:
var blob = new Blob([e.data], {
type: 'image/gif'
});
Phương pháp này được gọi là hàng chục lần mỗi giây.
Bất kỳ ý tưởng nào về cách đặt loại nội dung blob mà không tạo đối tượng Blob
trùng lặp với new Blob
?
Bạn có thể cho biết cách bạn gửi dữ liệu blob không? Lưu ý rằng thuộc tính '.binaryType' chỉ có hiệu lực trên thông điệp nhị phân - nếu bạn đang gửi văn bản,' event.data' sẽ luôn chứa một chuỗi. – Bergi
Nó rất đơn giản: 'socket.send (message);' ở cuối nút JS. 'message' là một đối tượng blob nhị phân đến từ một ứng dụng OSX thông qua SocketRocket (kiểu' NSData'). Tin nhắn chắc chắn là một 'blob' nhị phân. –