Java 코드를 통해 http://example.com:8080/attachments에 파일을 첨부하려고합니다. 다중 데이터 업로드를 사용하고 있습니다. 나는 텍스트 파일을 업로드하고 그 잘 작동했다. jpg 파일을 시도했을 때 응답 코드는 200이지만 업로드 된 파일에는 문제가 있습니다. 파일이 손상되었다고합니다.Java에서 이미지의 멀티 파트 업로드
이미지를 바이트 배열로 변환하는 코드입니다.
byte[] bFile = new byte[(int) file.length()];
fileInputStream = new FileInputStream(file);
int bytesAvailable = fileInputStream.available();
int maxBufferSize = 4096;
byte[] buffer = new byte[bytesAvailable];
ByteArrayOutputStream bos = new ByteArrayOutputStream();
int bytesRead = fileInputStream.read(buffer, 0, bytesAvailable);
while (bytesRead > 0) {
bos.write(buffer, 0, bytesAvailable);
bytesAvailable = fileInputStream.available();
bytesAvailable = Math.min(bytesAvailable, maxBufferSize);
bytesRead = fileInputStream.read(buffer, 0, bytesAvailable);
}
bFile = bos.toByteArray();
나는 이미지를 전송하고있는 바이트 배열에 문제가 있으면 알려 주시기 바랍니다
String contentDisposition = "Content-Disposition: form-data; name=\"file\"; filename=\"" + file.getName() + "\"";
String contentType = "Content-Type: image/jpg";
String BOUNDARY = "*****";
HttpsURLConnection connection;
String CRLF = "\r\n";
StringBuffer requestBody = new StringBuffer();
requestBody.append("--");
requestBody.append(BOUNDARY);
requestBody.append(CRLF);
requestBody.append(contentDisposition);
requestBody.append(CRLF);
requestBody.append(contentType);
requestBody.append(CRLF);
requestBody.append(CRLF);
requestBody.append(new String(bFile));
requestBody.append(CRLF);
requestBody.append("--");
requestBody.append(BOUNDARY);
requestBody.append("--");
URL obj = new URL("url");
connection = (HttpsURLConnection) obj.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Accept-Language", "en-US,en;q=0.5");
connection.setRequestProperty("User-Agent", "Mozilla/5.0");
connection.setRequestProperty("Accept","*/*");
connection.setRequestProperty("Authorization", strEncoded);
connection.setRequestProperty("Content-Type", "multipart/form-data; boundary=" + BOUNDARY);
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setUseCaches(false);
DataOutputStream wr = new DataOutputStream(connection.getOutputStream());
wr.writeBytes(requestBody.toString());
wr.flush();
wr.close();
을 업로드하는 코드입니다.
오류 메시지가 첨부 된 스크린 샷을 확인하십시오.
http://tinypic.com/r/33233hl/5
감사합니다.
감사합니다. @vanOekal. 문제는 바이트를 보내는 것이 었습니다. 나는 내 코드를 '로 교체했다. while (bytesRead> 0) { wr.write (buffer, 0, bytesAvailable); bytesAvailable = fileInputStream.available(); bytesAvailable = Math.min (bytesAvailable, maxBufferSize); bytesRead = fileInputStream.read (buffer, 0, bytesAvailable); }' 이제 제대로 작동합니다. – Karthik