서명 패드와 연결되는 애플릿을 작업하고 있습니다. 서명 패드 API에는 BufferedImage를 반환하는 함수가 있습니다 (API_CALL_TO_RETURN_BUFFERED_IMAGE()라고 가정). jpeg로 인코딩하여이 이미지를 파일에 쓸 수 있습니다 (FileOutputStream 사용). 그러나 로컬 디스크에 쓰는 대신 jpeg로 인코딩 된 이미지를 서버에 업로드해야합니다. 서버에 데이터를 POST 할 수 있으며 이미지를 잘 인코딩 할 수 있습니다. 그러나 나는 두 가지 일을 중간에 만나는 데 어려움을 겪고있다.ByteArrayOutputStream가 서버에 업로드되었습니다.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
JPEGImageEncode jie = JPEGCodec.createJPEGEncoder(baos);
jpeg.encode(API_CALL_TO_RETURN_BUFFERED_IMAGE()); // assume magic
// baos now contains jpeg data
URLConnection urlc = new URL(some_url).openConnection();
// set up urlc request headers and such
DataOutputStream dos = new DataOutputStream(urlc.getOutputStream());
dos.writeBytes(???); // ??? should be image=[the data in baos above]
// close stuff
원래, 내가 생각 :
String post_data = URLEncoder.encode("image=" + new String(baos.toByteArray()), some_charset);
dos.writeBytes(post_data);
을하지만 명확하게 이미지를 왜곡
다음은 코드의 압축 된 버전입니다 (시도 - 캐치, 기능, 클래스는 생략).
This is what the proper (written locally) image looks like
나는 하나의 하이퍼 링크를 게시 할 수 있지만, 왜곡 된 이미지가 여기에 있습니다 :
가 어떻게이 DataOutputStream 정렬에있는 ByteArrayOutputStream를 작성하려면 어떻게해야합니까 imgur.com/mbmJL.jpg?
EDIT/UPDATE :
내 솔루션은 mutlipart의 POST를 수행하는 것이 었습니다.
다중/폼 데이터는 파일, 비 ASCII 값, 또는 바이너리 데이터에 사용되어야한다 : 다중/폼 데이터로 Content-Type 헤더를 설정하는 이유는이 링크, http://www.w3.org/TR/html401/interact/forms.html#h-17.13.4로 말한다이었다 나는 내가 그 풀 타임 자바 프로그래머에 사소한 확신
dos.writeBytes(baos.toByteArray());
있지만 :
는 지금까지 DataOutputStream 정렬에있는 ByteArrayOutputStream를 작성, 그것은처럼 보인다!
필자는 필자가 필요로하는 방식을 제공했기 때문에 제안 된 라이브러리를 사용하지 않았습니다.
HttpClient는 매우 편리하고 사용하기 쉽습니다.) – Roman
원래이 문제는 내 자바라고 생각했지만 (지금은 많이 쓰지 않습니다) 문제가 이미지 데이터를 디코딩한다고 생각하고 있습니다. 서버에. –