안녕하세요.
안드로이드에서 저장된 이미지를 선택해서 서버로 이미지를 올리려고 하는데 문제가 생기네요
이미지는 정상적으로 올라간듯 보이나, 서버에서 다운 받아 열어보면 파일이 깨져 열리질 않는 문제가 생기고 있습니다.
logCat 메시지에서 특이한 건 아래와 같이 나오고 있습니다.
dalvikvm(26555): GC_FOR_MALLOC freed 75K, 42% free 3312K/5639K, external 2469K/2596K, paused 25ms
이제 정확히 무슨 뜻인지..
이미지 업로드 소스는 아래와 같습니다.
private void HttpFileUpload(String urlString , String params, String fileName)
{
// TODO Auto-generated method stub
try{
mFileInputStream = new FileInputStream(fileName);
URL connectUrl = new URL("urlString);
// open connection
HttpURLConnection conn = (HttpURLConnection) connectUrl.openConnection();
conn.setDoInput(true);
conn.setDoOutput(true);
conn.setUseCaches(false);
conn.setRequestMethod("POST");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Content-Type", "multipart/form-data;boundary=" + boundary);
// write data
DataOutputStream dos = new DataOutputStream(conn.getOutputStream()) ;
dos.writeBytes(twoHyphens + boundary + lineEnd);
// uploadedfile 파일이 ashx 핸들러에서 파일을 찾을 때 사용함으로 이름이 반드시 동일해야함..
// 이름을 바꾸면 ashx 파일에서도 바꿀것.
dos.writeBytes("Content-Disposition:form-data;name=\"FileName\";filename=\"" + fileName + "\"" + lineEnd);
dos.writeBytes(lineEnd);
int bytesAvailable = mFileInputStream.available();
int maxBufferSize = 1024;
int bufferSize = Math.min(bytesAvailable, maxBufferSize);
Log.e("ALBAMON_BRAND" , "bufferSize - " + bufferSize );
byte[] buffer = new byte[bufferSize];
int bytesRead = mFileInputStream.read(buffer , 0 , bufferSize);
// Read 파일
while(bytesRead > 0 ) {
dos.write(buffer , 0 , bufferSize);
bytesAvailable = mFileInputStream.available();
bufferSize = Math.min(bytesAvailable, maxBufferSize);
bytesRead = mFileInputStream.read(buffer,0,bufferSize);
}
dos.writeBytes(lineEnd);
dos.writeBytes(twoHyphens + boundary + twoHyphens + lineEnd);
//close streams
mFileInputStream.close();
dos.flush(); // 버퍼에 있는 값을 모두 밀어냄
//웹서버에서 결과를 받아 EditText 컨트롤에 보여줌
int ch;
InputStream is =conn.getInputStream();
StringBuffer SBuffer = new StringBuffer();
while((ch = is.read()) != -1 ) {
SBuffer.append((char)ch);
}
String file = SBuffer.toString();
dos.close();
if (dialog.isShowing())
dialog.dismiss();
}
catch(Exception e)
{
if (dialog.isShowing())
dialog.dismiss();
}
}