안녕하세요.

안드로이드에서 저장된 이미지를 선택해서 서버로 이미지를 올리려고 하는데 문제가 생기네요

이미지는 정상적으로 올라간듯 보이나, 서버에서 다운 받아 열어보면 파일이 깨져 열리질 않는 문제가 생기고 있습니다.

 

 

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();
        }
       }