여기에서 수행하고 싶은 작업과 관련하여 스택 오버플로에 관한 거의 모든 질문을 보았습니다. 그러니 제발 날 도와 줘요.안드로이드 : 멀티 파트를 사용하는 동안 바이너리 사진이 전송되지 않았습니다.
일부 문자열을 따라 PHP 웹 응용 프로그램 서버로 이진 파일을 보내도록 작성한 코드는 다음과 같습니다.
public void doRegister(final String userEmail, final String userPass, final File userPhotoId) {
HttpClient myHttpClient = new DefaultHttpClient();
new Thread(new Runnable() {
@Override
public void run() {
try {
HttpPost registerTry = new HttpPost(Constants.oAuthRegURL);
MultipartEntity signupEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
signupEntity.addPart("email", new StringBody(userEmail, Charset.forName("UTF-8")));
signupEntity.addPart("password", new StringBody(userPass, Charset.forName("UTF-8")));
signupEntity.addPart("User[profilePicture]", new FileBody(userPhotoId, "image/jpeg"));
registerTry.setEntity(signupEntity);
HttpResponse signupHttpResp = myHttpClient.execute(registerTry);
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (JSONException e) {
e.printStackTrace();
}
}
}).start();
}
파일 userPhotoId 작성 및 카메라 API를 통해 반환 된 사진 파일 (내가 얻는 데이터 &가 그 비트 맵 등의 파일 객체를 생성 그것에서 비트 맵을 생성하여 onActivityResult &에 카메라를 통해 반환)
그래서 여기의 문제는 사진이 서버로 이런 식으로 전송되지 않습니다. 내가 이런 파일 바디 섹션에 마임을 제거한다면, :
signupEntity.addPart("User[profilePicture]", new FileBody(userPhotoId));
바이너리 파일/사진이 제대로 전송됩니다. 하지만 난 바이너리 악성 코드를 방지하기 위해 들어오는 파일을 확인하는 웹 응용 프로그램에 필요한 보안으로 인해 엔티티 mimeType을 설정해야합니다. 그래서 아무도 왜 엔티티 요청에서 mimeType을 사용할 때 파일이 전송되지 않았는지 말할 수 있습니까?
p.s. 내 프로젝트의 libs에서 httpclient-4.3.2, httpmime-4.3.2, httpcore-4.3.1을 가져오고 SDK 19로 컴파일했습니다.