2013-02-24 4 views
1

감사합니다. 비공식적 인 질문에 유감스럽게 생각합니다. ajax와 zend를 사용하여 이미지를 업로드하는 방법은 무엇입니까?

는 사실은 내가 파일을 업로드 아약스와 젠드를 사용하고 있습니다.

내 아약스 코드는 다음과 같습니다

$.ajax({ 
     type: "POST", 
     url: "/business_general/imagesave", 
     enctype: 'multipart/form-data', 
     data: {'file': files.getAsBinary(), 'fname' : file.fileName}, 
     success: function(arrReturn){ 
      alert("Data Uploaded: "); 
     } 
}); 

을 여기에, 나는

내 컨트롤러 파일 작업은 다음과 같습니다 데이터베이스에 내 이미지를 저장 (imagesave) 컨트롤러 액션라고 :

$config = Zend_Registry::get('config'); 
    $vehiclelogo = $config->paths->vehiclelogo; 
    $file = $objRequest->getParam('file'); 
    $ret = $objRequest->getParam('fname'); 
    $path_parts = pathinfo($ret); 

    echo $path_parts['extension'], "\n"; 
    echo $path_parts['filename'], "\n"; 

    $targetPath = mktime(date("H"), date("i"), date("s"), date("m"), date("d"), date("Y")); 

    try { 
     echo "POSTED FILE NAME"." ". $ret; 
     echo "TYPE OF FILE UPLOADED"." "."-". gettype($ret); 
     $strFilePath = $vehiclelogo.'/'.$targetPath.'.'.$path_parts['extension']; 
     $OPfile = fopen($strFilePath,"w"); 
     fwrite($OPfile,$file); 
     fclose($OPfile); 
     echo "completed"; 
    } 
    catch (Exception $e) { 
     echo "error"; 
    } 

여기서는 선택한 이미지를 폴더로 업로드합니다. 실제로 텍스트 파일을 업로드 할 수 있습니다. 그러나 png/jpeg 파일을 업로드하면 폴더에 업로드되지만 실제로는 열 수 없습니다.

모든 유형의 파일을 업로드 할 수 있어야합니다.

어떻게 이것을 zend-php와 ajax에서 실행할 수 있습니까?

+0

의 서식을 개선하세요 코드를 작성하고 여기 또는 그곳에서 질문의 표현을 향상시킬 수 없는지 살펴보십시오. – hakre

답변

2

죄송합니다. getAsBinary()가 최신 브라우저에서는 지원하지 않습니다. 아약스를 사용하여 파일을 올린 파일에 보이지 않는 캔버스를 사용할 수 있습니다.

var canvas = document.getElementById("canvas") 
     canvas.width = img.width; 
     canvas.height = img.height; 
     var ctx = canvas.getContext("2d"); 
     ctx.drawImage(img,0,0); 
     var strdata = canvas.toDataURL("image/png"); 
     document.getElementById("company_logo").src=strdata; 
     $.ajax({ 
    type: "POST",             
    url: "/business_vehicle/vehiclegeneralsave",      
    data: "&data="+strdata, 
    success: function(arrResult) { 

// 할 이미지를 받아 봐 수 콘트롤러 측에서 뭔가

} 
}); 

`공공 기능 vehiclegeneralsaveAction() {

$file = $arrVehicleDetails = trim($objRequest->getParam('data')); 

     $strEncodedData = str_replace(' ', '+', $file); 
    $strFilteredData = explode(',', $strEncodedData); 
    $strUnencoded = base64_decode($strFilteredData[1]); 

    file_put_contents('../public/image/image.png', $strUnencoded); 
    }` 
+0

감사합니다. 잘 했어요. 대단히 감사합니다. –

관련 문제