2016-08-18 3 views
1

자바 스크립트를 통해 내 웹 페이지에 그림 파일을 BLOB 유형의 파일로 업로드하고 파일을 저장하는 자바 웹 서버 서버로 전송하려고합니다. 웹 페이지에 사용 된 서버 BLOB 데이터를 읽고 다음과 같이 파일이 쓰기로 나는 그것이 Error interpreting JPEG image file (Not a JPEG file: starts with 0x00 0x00) 말한다 사진을 열려고 할 때 websocker 서버 자바 측자바 스크립트 BLOB 데이터를 읽는 방법 자바 웹 서버에서 웹 소켓을 통해 전송

내 코드는 다음

public void testMethod(final WebMessage message){ 
    ByteBuffer b = null; 
    try { 
     b = message.getByteBufferArg(0); 
    } catch (WebMessageException e2) { 
     // TODO Auto-generated catch block 
     e2.printStackTrace(); 
    } 
    File file = new File("/user/Desktop/pic.jpg"); 
    try { 
     file.createNewFile(); 
    } catch (IOException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 
    try { 
     FileOutputStream stream = new FileOutputStream(file.getAbsoluteFile()); 
     stream.write(b.array()); 
     logger.info("done writing file"); 
     stream.close(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     logger.trace(e.getMessage()); 
    } 
} 

입니다.

기본적으로 나는 내 websocket 서버로 전송 된이 BLOB 데이터를 읽을 수있는 방법을 알고 싶습니다.이 데이터를 쓸 수있는 파일에 어떻게 쓸 수 있습니까?

답변

1

Blob에서 데이터를 읽은 다음 Blob에서 읽을 수있는 유일한 방법은 FileReader (https://developer.mozilla.org/en-US/docs/Web/API/FileReader)를 사용하는 것입니다. BlobArray에서 데이터를 읽은 다음에는 바로 BinaryArray - https://developer.mozilla.org/en-US/docs/Web/API/FileReader/readAsBinaryString을 읽습니다. 파일을 출력 스트림에 저장하십시오. 문서에서

- https://developer.mozilla.org/en/docs/Web/API/Blob :의 Blob

에서의 Blob의 내용을 읽을 수있는 유일한 방법은 데이터를 추출하기위한

예는을 FileReader를 사용하는 것입니다. 다음 코드는 Blob의 내용을 형식화 된 배열로 읽습니다. FileReader와 다른 방법을 사용하여

var reader = new FileReader(); 
reader.addEventListener("loadend", function() { 
    // reader.result contains the contents of blob as a typed array 
}); 
reader.readAsArrayBuffer(blob); 

, 그 캐릭터 데이터 또는 URL과 같은 물방울의 내용을 판독 할 수있다.

0

이 문제를 해결하는 방법은 데이터를 BLOB 형식으로 자바 스크립트 측에서 보내지 않는 것입니다. 데이터를 읽을 수있는 형식으로 읽어야합니다. 이 경우 BLOB 데이터를 dataurl으로 읽으려면 FileReader API를 사용합니다. 이 방법을 사용하여 읽은 후 데이터는 base64 가독 형식이며 base64 문자열이 디코딩 된 후 websocket을 통해 전송되고 다른 쪽 파일에 기록 될 수 있습니다.