Android MySQL Image Upload BLOB

Android – OkHttp

public class DBConvertor {
    public static void send2Server(String url,  File imageFile) {
        RequestBody requestBody=null;
      try {
          requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
                  .addFormDataPart("img",imageFile.getName(), RequestBody.create(MultipartBody.FORM, imageFile))
                  .build();
      }catch (Exception e){
      }
        Log.d("ReviewImageUpload",requestBody.toString());
        Request request = new Request.Builder().url(url)
                .post(requestBody).build();
        OkHttpClient client = new OkHttpClient();
        client.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                e.printStackTrace();
            }
            @Override
            public void onResponse(Call call, Response response) throws IOException {
                Log.d("TEST : ", response.body().string());
            }
        });
    }
}

PHP

<?php
    $con = mysqli_connect("localhost", "DBID", "DBPASSWD", "DBNAME");
	mysqli_query($con,'SET NAMES utf8');
	$file= $_FILES['img'];
	    //이미지 파일을 영구보관하기 위해
    //이미지 파일의 세부정보 얻어오기
    $srcName= $file['name'];
    $tmpName= $file['tmp_name']; //php 파일을 받으면 임시저장소에 넣는다. 그곳이 tmp
    //임시 저장소 이미지를 원하는 폴더로 이동
    $dstName= "../uploads/".date('Ymd_his').$srcName;
    $result=move_uploaded_file($tmpName, $dstName);
$saveFile =date('Ymd_his').$srcName;
	$handle = fopen($dstName,'rb');
	$content = addslashes(fread($handle,filesize($dstName)));
	$sql = "INSERT INTO dbname(image_name,image_blob) VALUES('$saveFile','$content');";
	$res = mysqli_query($con,$sql);
	// 접속 실패 시 메시지 나오게 하기
	if (mysqli_connect_errno($con)) { echo "MySQL접속 실패: " . mysqli_connect_error(); }
	// 기본 클라이언트 문자 집합 설정하기
	mysqli_set_charset($con,"utf8");
	// 결과를 배열로 변환하기 위한 변수 정의
	mysqli_close($con);
?

Leave a Comment