3

안드로이드 발리 라이브러리를 사용하여 비트 맵 이미지를 서버에 업로드하는 방법 이미지를 서버에 업로드하려면 안드로이드 발리볼을 사용하려고합니다. 안드로이드 발리에 그런 옵션이 없다면 네트워킹 작업을 더 빨리 수행 할 수있는 가장 좋은 방법을 제안 해주십시오. 이 주제와 관련된 온라인 튜토리얼에 대한 링크를 보내 주시면 감사하겠습니다.android volley library를 사용하여 비트 맵 이미지를 서버에 업로드하는 방법은 무엇입니까?

답변

3

제가 알고있는 한, Volley는 이미지와 같은 많은 양의 데이터를 원격 서버로 보내는 올바른 선택이 아닙니다. 어쨌든 이미지를 보내려면 Request 클래스를 확장하고 논리를 구현해야합니다. 도구 상자 패키지에서 이미 사용할 수있는 클래스를 예로들 수 있습니다. 그렇지 않으면, 당신은 HttpURLConnection의를 사용하고 논리를 구현할 수, 먼저 설정해야합니다 :

경계가 당신이 좋아하는 캐릭터가
con.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + boundary); 

. 그러면 연결에서 출력 스트림을 가져와 파트 작성을 시작해야합니다.

public void addFilePart(String paramName, String fileName, byte[] data) throws Exception { 
os.write((delimiter + boundary + "\r\n").getBytes()); 
os.write(("Content-Disposition: form-data; name=\"" + paramName + "\"; filename=\"" + fileName + "\"\r\n" ).getBytes()); 
os.write(("Content-Type: application/octet-stream\r\n" ).getBytes()); 
os.write(("Content-Transfer-Encoding: binary\r\n" ).getBytes()); 
os.write("\r\n".getBytes()); 

os.write(data); 

os.write("\r\n".getBytes()); 

} 등등. 나는 (링크를 묻기 때문에) 그것에 관한 튜토리얼을 썼다. 너는보기 here을 줄 수있다.

HttpUrlConnection이 마음에 들지 않으면 Apache HTTP 클라이언트를보다 쉽게 ​​사용할 수 있습니다.

HttpClient client = new DefaultHttpClient(); 
HttpPost post = new HttpPost(url); 

다음 :

MultipartEntity multiPart = new MultipartEntity(); 
multiPart.addPart("param1", new StringBody(param1)); 
multiPart.addPart("param2", new StringBody(param2)); 
multiPart.addPart("file", new ByteArrayBody(baos.toByteArray(), "logo.png")); // Your image 

은 당신이 도움이되기를 바랍니다!

+5

대용량 데이터를 전송하기에 적절한 발리가 아닌 이유를 정확하게 설명해주십시오. (imho 이미지는 보통 크기가 아닌 보통 크기 임) – WarrenFaith

0

요청의 하위 클래스를 확장하고 getBody() 메서드를 재정의하고 getBody() 메서드에서 이미지의 바이트 데이터를 반환 할 수 있습니다.

+0

안녕하세요 @footman,이 작업 방법을 공유 하시겠습니까? Volley를 사용하여 이미지를 서버에 게시하는 데 문제가 있습니다. 항상 400 응답을 얻습니다. 공유 할 마음이 있으십니까? – ito

0

이미지는 Multipart 클래스를 사용하지 않고 발리볼을 사용하여 서버로 보낼 수 있습니다. base64 형식의 이미지를 서버로 보내면됩니다. 그것은 나를 위해 일했습니다.

+0

Base64는 이미지를 웹 서비스에 전달하는 좋은 방법이 아닙니다. 작은 이미지에서만 작동합니다. 더 큰 이미지 작업을 시작하자마자 모든 종류의 문제 (Entity to large 등)가 실행됩니다. –

관련 문제