2010-12-07 2 views
0

XMLHttpRequestXMLHttpRequest 객체로 바이너리 데이터를 보낼 수있는 방법이 있습니까?

var xhr = new XMLHttpRequest(); 
var bindata = 0x0f0f; 

xhr.open("POST", "binary_reader.php"); 

xhr.send(bindata); 

함께 이진 청크 보내려고하지만이 방법은 작동하지 않습니다. Content-type을 제공하려고 시도했습니다. application/octet-stream, xhr의 콘텐츠 인코딩 헤더이며 작동하지 않습니다. 나는 그러한 종류의 요청을 작성할 수있는 방법이 없다고 생각합니다.

어떤 도움을 주셔서 감사합니다.

+1

이 방법으로 파일을 보내려고하십니까? 블롭 전송을 허용하는 레벨 2 스펙에는 몇 가지 변경 사항이 있습니다. 이는 정확히 무엇을 하려는지에 달려 있습니다. http://www.w3.org/TR/XMLHttpRequest2/#the-send-method –

+0

아니요,이 파일이 아닙니다. 서버에서 보내지는 인코딩 된 패킷입니다. 서버는 차례로 유사한 구조의 패킷으로 응답합니다. 나는 어느 쪽이든을 할 수 있고 base64로 끝나는 것을 보내고받을 때 패킷을 인 코드/디코드 할 수 있다고 이해하지만 webapp "realtimeness"때문에 CPU 시간과 패킷 크기 오버 헤드를 줄이려고한다. – duganets

답변

1

예 XHR을 사용하여 이진 데이터를 보낼 수 있습니다. 적절한 헤더와 마임 타입을 설정하고 간단한 send 메소드 대신 sendAsBinary 메소드를 호출하기 만하면됩니다. 예를 들어 :

var req = new XMLHttpRequest(); 
req.open("POST", url, true); 
// set headers and mime-type appropriately 
req.setRequestHeader("Content-Length", 741); 
req.sendAsBinary(aBody); 
+3

참고 : Firefox 3.5 이상에서만 작동합니다. –

1

W3C는 latest specification에서 XMLHttpRequest의에 물방울 유형을 소개했다. 현재까지 구현을 보지 못했지만 가까운 장래에 XMLHttpRequest를 사용하여 바이너리 데이터를 다운로드하고 업로드하는 방법이 분명합니다.

0

"이진 데이터 처리"절인 here에서는 XMLHttpRequest를 통해 이진 데이터를 보내고받는 방법을 설명합니다.

관련 문제