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

안드로이드에서 php웹서버로 데이터전송..

0 추천
-------------------------------------------------------------------------------------------------------------------------
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
<?php
$dirRoot = $_SERVER["DOCUMENT_ROOT"];
 
$postValueName = $_FILES['uploaded_file']['name'];
$postValueFile = $_FILES['uploaded_file']['tmp_name'];
 
$dirName = explode(' ', $postValueName);
 
if(is_dir($dirRoot."/sdp")){
echo "Presence";
}else{
echo "Absence";
@mkdir($dirRoot."/sdp", 0777);
}
 
$destination = "./sdp/$dirName[1]/$dirName[0]";
move_uploaded_file($postValueFile, $destination);
?> 
-------------------------------------------------------------------------------------------------------------------------
안드로이드에서 폴더를 생성하여("ECU-KR") 그 폴더로 파일을 전송하고 있습니다.
휴대폰 내부 사진경로와 폴더명을 전달받아 explode로 문자열을 나누었습니다.
$dirName[1]에 폴더명이 들어가는데요.. 영어일땐 파일이 잘 업로드 되지만 한글일땐 업로드가 되지않네요..
파일 생성 php는 따로 있습니다. 인코드는 "ecu-kr"입니다.
근데 $destination = "./sdp/테스트/$dirName[0]"; 이렇게하면 또 전송이 되네요
 
이걸로 봐서는 안드로이드에서 전송할때 깨진것같은데 전송할때는 
-------------------------------------------------------------------------------------------------------------------------
byte[] tmpByte = null;
try {
    tmpByte = folderName.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}
String tmpName = new String(tmpByte);
-------------------------------------------------------------------------------------------------------------------------
이렇게 해서 tmpName을 전송합니다. 그리고 php에서는 iconv로 utf-8, euc-kr, 변수 로 받는데 안되네요..

 

연필좀주세요 (810 포인트) 님이 2015년 2월 24일 질문

1개의 답변

+1 추천
 
채택된 답변
tmpByte = folderName.getBytes("EUC-KR");

이렇게 해보심은?

 

서버단에서

<meta http-equiv="content-type" content="text/html; charset=euc-kr">

charset=euc-kr" 을 사용해야만 한다면 어쩔수 없겠지만

안드로이드 기본이 utf-8 이니

<meta http-equiv="content-type" content="text/html; charset=utf-8">

이렇게 하면 인코딩 문제에서 해방되는거 아닌가요?
nicehee (73,100 포인트) 님이 2015년 2월 24일 답변
연필좀주세요님이 2015년 2월 24일 채택됨
nicehee님 여기도 계시네요!
역시 반대로 해봤는데 안됩니다.ㅠ 전송을 되는데 한글폴더에만 안들어가지네요.
머리아프네요 거참..
답변 수정했는데 다시 읽어보시길...
서버단에서의 인코딩 문제는 없는것 같습니다.
픈으로 서버에 한글폴더를 만들고 그걸 리스트뷰로 확인도 할수있습니다만,
왜 한글폴더로만 전송이 안되는지..

String fileName = sourceFileUrl + " ";
String tmpName = fileName.concat(folderName); //ex) /sdCard0/test/123123.jpg 테스트
       
byte[] tmpByte = null;
try {
    tmpByte = tmpName.getBytes("UTF-8");
} catch (UnsupportedEncodingException e) {
    e.printStackTrace();
}
String fName = new String(tmpByte);   

이렇게해서 fName을 바이트로 전송하여,
php에서는 $dirName = explode(' ', $postValueName);하여
$dirName[0], $dirName[1] 경로와 폴더명을 나누고있습니다.
...