PHP 소스
<?php
$file_path = "";
$var = $_POST['result'];
$file_path = $file_path . basename( $_FILES['uploaded_file']['name']);
if(move_uploaded_file($_FILES['uploaded_file']['tmp_name'], $file_path)) {
$result =array("result" => "success", "value" => $var);
} else{
$result = array("result" => "error");
}
echo json_encode($result);
?>
안드로이드 소스 (Activity)
//파일 생성 //img_url은 이미지의 경로
File file = new File(img_url);
RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), file);
MultipartBody.Part body = MultipartBody.Part.createFormData("uploaded_file", file.getName(), requestFile);
Call<Result> resultCall =inquire_interface.uploadImage(body);
resultCall.enqueue(new Callback<Result>() {
@Override
public void onResponse(Call<Result> call, Response<Result> response) {
}
@Override
public void onFailure(Call<Result> call, Throwable t) {
}
});
안드로이드 (Interface)
//사용자가 프로필 이미지를 변경했을때 해당 이미지를 서버로 전송하는 통신
@Multipart
@POST("sketch_up/image/upload_img.php")
Call<Result> uploadImage(@Part MultipartBody.Part File);
==================================================================================================
에러 사항
내 경우 이미지가 정상적으로 upload되지 않고 결과가 'error' 가 나왔다.
그래서 다음 명령어로 file에 어떤 에러가 있는지 확인해 보았다.
$result = $_FILES['uploaded_file']['error'];
결과는 '1' 이 나왔다.
1의 결과가 어떤것인지 확인해보았다.
출처: http://www.dontorz.com/bbs/?mode=view&bbsid=study&ctg_cd=php&bltn_seq=3
1은 업로드된 파일의 크기가 php.ini 에서 선언된 upload_max_filesize 보다 큼 이였고 phpinfo로 나의 upload_max_filesize를 확인했다.
확인결과 다음과 같이 최대 2M까지만 upload가 가능했다.
그렇지만 내가 업로드한 사진의 크기는 다음과 같았다.
그래서 php.ini에서 upload_max_filesize를 10M로 변경하고 서버를 재실행하고나니 정상적으로 작동됬다.
------------------------------------------------------------------------------------------------------------------------
2018-12-24 추가사항
예전에 업로드된 글을 하나씩 읽고있는중에 이 소스를 봤을때 다시 작성한다면 php소스에서 압축알고리즘을 넣어서 다시 작성할 것 같다.
하나의 사진이 2.34MB라면 너무 큰 사진크기인것같다.
'안드로이드' 카테고리의 다른 글
Android Intent를 사용해서 액티비티 전환하기 (3) | 2018.07.03 |
---|---|
onUserLeavehint() 액티비티 이동간에 호출하지 않기 (1) | 2018.05.08 |
edittext 입력 불가로 만들기 (0) | 2018.04.15 |
Relative layout에서 layout 최상단으로 올리기 (0) | 2018.04.10 |
안드로이드 동적 textview 생성 (0) | 2018.04.04 |