마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

httpurlconnection 을 통한 서버로 이미지 업로드

0 추천

갤러리에서 이미지를 선택해서 

node.js서버로 업로드 하고싶습니다. 

//이미지
File file = new File(absolutePath);
FileInputStream fs = new FileInputStream(file);
Log.d("메시지", "파일 : "+file);

try {
    // opening boundary line
    ds.writeBytes(twoHyphens + boundary + CRLF);
    ds.writeBytes("Content-Disposition: form-data; filename=\""
            + "bitmap.jpg"
            + "\""
            + CRLF);
    ds.writeBytes("Content-Type: " + "image/jpg" +  CRLF);
    ds.writeBytes(crlf);

    // create a buffer of maximum size
    int bytesAvailable = fs.available();
    int maxBufferSize = 2048;
    int bufferSize = Math.min(bytesAvailable, maxBufferSize);
    byte[] buffer = new byte[bufferSize];
    // read file and write it into form...
    int bytesRead = fs.read(buffer, 0, bufferSize);
    while (bytesRead > 0)   {
        ds.write(buffer, 0, bufferSize);
        bytesAvailable = fs.available();
        bufferSize = Math.min(bytesAvailable, maxBufferSize);
        bytesRead = fs.read(buffer, 0, bufferSize);
    }

    // closing CRLF
    ds.writeBytes(crlf);
}
catch(Exception e)  {

    Log.e(TAG, "AndroidUploader.writeFormField: got: " + e.getMessage());
}


// 전송 데이터 끝 표시
// DataOutputStream에 twoHyphens + boundary + twoHyphens + lineEnd 로 끝을 알려준다
ds.writeBytes(twoHyphens + boundary + twoHyphens + this.crlf);
ds.flush();
ds.close();

 

이렇게 서버로 이미지를 보내면..

파일이 조금 받아지다가 서버의 콘솔창이 깨져버립니다.

어디가 문제일까요

 

익명사용자 님이 2016년 12월 26일 질문

1개의 답변

0 추천

컨텐츠 타입이 잘못된거 같습니다.

아래와 같이 변경해서 보내보세요~

Content-Type: application/octet-stream

 

그리고 저희는 보낼때 filename 앞에 name 이라는 것에 변수명을 실어서 던집니다.

서버쪽에서 해당 변수명으로 접근이 가능합니다.

바램 (19,650 포인트) 님이 2016년 12월 26일 답변
바램님이 2016년 12월 26일 수정
...