0
토닉 (나머지는 PHP 라이브러리)으로 나머지 웹 서비스를 만듭니다.REST Webservice HTTP_PUT 매개 변수
요소를 편집하기 위해 CRUD 및 REST에 따라 사용합니다.
그래서 그림과 파일 형식으로 내 메서드를 호출하고 paramters를 구문 분석하고 내 서버에 base64로 인코딩 된 파일을 저장합니다.
코드 :
function put($request) {
$response = new Response($request);
$msg = new ErrorMessage();
$dbmodel = new DBModel();
$arr = array('Data' => null,'Message' =>null,'Code' => null);
try{
$split = explode ('&',$request->data);
$para = array();
foreach($split as $i) {
$names = explode('=',$i);
if(!isset($names[0]) or !isset($names[1]))
{
throw new Exception();
}
$para[$names[0]] = $names[1];
}
}
catch(Exception $e)
{
$arr['Code'] = 400;
$arr['Message'] = $msg->getMessage(400);
$response->body = json_encode($arr);
return $response;
}
if (isset($para['picture']) or isset($para['filetype']))
{
if (isset($para['picture']) and isset($para['filetype']))
{
if (!($para['filetype'] == 'jpg' || $para['filetype'] == 'png'))
{
$arr['Code'] = 688;
$arr['Message'] = $msg->getMessage(617);
$response->body = json_encode($arr);
return $response;
}
$bin = base64_decode($para['picture']);
if (strlen($bin) >524288)
{
$arr['Code'] = 617;
$arr['Message'] = $msg->getMessage(617);
$response->body = json_encode($arr);
return $response;
}
$uid = $dbmodel->getUid($sid);
if($uid<1)
{
$arr['Code'] = 699;
$arr['Message'] = $msg->getMessage(699);
$response->body = json_encode($arr);
return $response;
}
$file = fopen($_SERVER['DOCUMENT_ROOT']."/img/".$uid.".".$para['filetype'], 'wb');
fwrite($file, $bin);
fclose($file);
}
else
{
$arr['Code'] = 616;
$arr['Message'] = $msg->getMessage(616);
$response->body = json_encode($arr);
return $response;
}
}
$arr['Code'] = 200;
$arr['Message'] = $msg->getMessage(200);
$response->body = json_encode($arr);
return $response;
}
문제 : 저장된 사진은 내가 64 기수로 내 사진을 변환 할 수 http://www.redio.info/werkzeuge/file2base64.html을 사용하여이 이미지
로 표시 할 수 없습니다 원래처럼되지 않습니다. 내 코드의 시작 부분에 문제가 파싱에있을 수 있다고 생각합니다.
원본 : 13.872 바이트
새로운 이미지 : 14.313 바이트
원본과 다른가요? –
내가 퀘스트를 업데이트했습니다. – user547995
hexeditor (또는 텍스트 편집기)를 사용하여 두 파일을 살펴보고 명백한 차이점을 찾으십시오. –