안드로이드 앱에서 웹서버(php/MySQL)로 이미지 전송하는 방법에 대해서 질문드립니다.

조회수 4994회

안녕하세요. 입문 개발자 입니다.

안드로이드 앱에서 웹서버(php, MySQL)로 데이터를 전송하는 일을 하고있습니다.

앱에서 제품에 대한 정보(텍스트+사진)를 입력해서 웹서버 DB에 저장하고, 제품의 정보중에 시리얼번호로 검색을 하면 DB에 저장된 정보를 보여주는거라고 생각하시면 됩니다.

현재 제품에 대한 텍스트 정보는 HttpURLConnection을 이용해 구현했고, 정상적으로 DB에 저장/읽기 가 되는데 이미지쪽은 어떻게 처리를 해야 할지 모르겠습니다. 이미지도 한장이 아니라 여러장입니다.(이미지 개수는 랜덤)

검색해보니 DB에 이미지를 넣는 방식이 아닌 웹서버에 이미지를 업로드하고 DB에는 이미지 경로만 저장하는 형식으로 한다는데 이미지가 여러장일경우는 어떤식으로 하는지 모르겠습니다.

그리고 이미지 전송 예제를 찾아봤는데 전부 CROP으로 이미지를 잘라서 전송하고, 웹서버에 전송된 이미지를 보면 사진이 작게 리사이징 되어있는 형식이라 알아보기도 힘들더군요. (원본이 1824x1983 / 447KB 인데 웹서버에 전송된 이미지 파일을 보면 228x247 / 53.4KB 입니다)

뭔가 말이 길어졌네요... 제가 궁금한점은

  1. 안드로이드 갤러리에서 사진을 여러장 선택해서 웹서버로 전송하는 방법
  2. 이미지를 CROP하지 않고 웹서버로 전송하는 방법
  3. 이미지가 여러개인 경우 DB에서 어떻게 처리해야 하는지

조언 부탁드립니다

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • 안드로이드 갤러리에서 여러 사진을 선택하는 방법은 아래 코드를 사용할 수 있습니다. 다만 Intent.EXTRA_ALLOW_MULTIPLE이 API level 18 이상에서만 사용할 수 있는 제약이 있습니다.

    Intent intent = new Intent();
    intent.setType("image/*");
    intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
    intent.setAction(Intent.ACTION_GET_CONTENT);
    startActivityForResult(Intent.createChooser(intent,"Select Picture"), REQUEST_CODE);
    

    그래서 대개 이미지를 선택하는 화면을 직접 만들거나 라이브러리를 사용하는 방법을 사용합니다. 직접 구현하는 방법 또는 라이브러리는 아래의 링크를 참고하세요. (구글에서 검색한 결과를 무작위로 넣었습니다.)

    이미지를 크롭하는 부분은 갤러리에서 선택된 이미지의 원본 Uri를 참고하면 됩니다. 현재 소스가 어떻게 되어있는지 모르겠지만 아마 썸네이를 서버로 전송하는 듯 하네요. 이 부분도 위 링크의 코드를 참고해보세요.

    이미지가 여러장인 경우는 이미지 서버에 이미지를 파일로 저장하고, DB에 파일 경로를 복수개로 저장하면 되지 않을까요?

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)