2012-03-06 6 views
0

나는 비디오를 업로드하고 젠드 프레임 워크를 사용하여 PHP로 변환하려고하는데 내 논리에 약간의 문제가있다.젠드 프레임 워크를 사용하여 업로드 된 파일의 경로를 설정하는 방법은 무엇입니까?

내가 업로드 된 파일을 보유 할 필요가 로컬, 디렉토리를 가지고 :

C:/xampp/htdocs/zend/videos/ 

주먹 난 후 동영상을 변환 그 디렉토리에 이동해야합니다. 이 같은 것을 사용하여 변환 메신저에 대한

:

$file = new Zend_Form_Element_File('file'); 
    $file->setLabel('File') 
     ->setRequired(true) 
     //->setDestination('/var/www/tmp') use in real life 
     ->setDestination('C:/xampp/htdocs/zend/tmp') 
     ->addValidator('Size', 
       false, 
       array('min' => '10kB', 'max' => '100MB')); 

내가 그 디렉토리에가는 파일을 업로드 할 때이 잘 : 여기

exec("ffmpeg -i video.avi -ar 22050 -ab 32 -f flv -s 320x240 video.flv", $out); 

은 내 양식의 일부입니다.

tmp 디렉토리의 파일을 변환 한 다음 다른 메인으로 옮긴 후 원래 파일을 삭제해야합니까?

원본 파일이 변환되기 전까지 일시적인 임시 디렉토리에 보관하지 않고 자동으로 삭제됩니다.

내가 Zend_File_Transfer_Adapter_Http를 사용하지만 조금 setDestination 사이의 차이와 Rename 필터에서 target 무엇인지에 혼란을 사용할 필요가있는 경우 메신저도 시도하고있다.

집에 누군가가이 문제에 대한 의견을 제시 할 수 있습니다.

감사

이 있다면 내가 필터의 이름을 변경 Zend_File_Transfer_Adapter_Http를 사용하지만 에서 사이 setDestination의 차이와 대상이 무엇인지에 조금 혼동 메신저도 노력하고 있어요

답변

0

그것을 사용할 필요가있다.

setDestination()은 권장되지 않으며 대신 Rename 필터를 사용해야합니다. Rename 필터 세트를 사용하면 대상이 무시됩니다. 그렇지 않으면 차이가별로 없습니다. 가장 큰 차이점은 Rename 필터가 파일의 이름을 바꿀 수 있다는 것입니다. 여기서 setDestination은 원래 파일 이름을 사용자의 PC에 그대로 유지하고 대상으로 만 이동합니다. 이렇게하면 기존 파일을 덮어 쓰거나 다른 사용자의 파일 이름을 신중하게 지정하지 않으면 다른 사용자의 파일을 손상시킬 수 있습니다.

내가 의 tmp 디렉토리에있는 파일을 변환 한 후 이동을 내 다른 주요 하나로, 다음 원래 하나를 삭제해야합니까?

개인적으로 나는 파일을 업로드 할 때 파일을 변환하려고 시도하지 않습니다. 많은 경우 변환이 빠를 수 있지만 비교적 큰 동영상을 업로드하고 동영상을 인코딩하는 데 4 분이 더 걸리면 어떻게됩니까? 사용자가 거기에 매달려 있으면서 변환이 이루어지는 동안 무슨 일이 일어나고 있는지 궁금하지 않으려 고합니다.

파일을 업로드하고 변환하여 임시 위치로 복사 한 다음 원래 위치로 옮깁니다. 이것은 물론 복잡성을 더합니다.

동영상을 업로드 할 때 바로 변환하려면 Zend_File_Transfer_Adapter_Http을 사용하는 것을 전혀 신경 쓰지 않아도됩니다. 대신 $_FILES 수퍼 글로벌을 사용하여 $_FILES['videofile']['tmp_name']에 액세스하고 ffmpeg이 해당 파일을 변환하고 최종 대상 또는 임시 대상에 출력을 작성한 다음 변환이 완료되면 이동하십시오. PHP에 업로드 된 파일은 move_uploaded_file으로 전화하거나 수동으로 영구 파일에 임시 파일을 쓰지 않으면 요청이 종료 될 때 자동으로 삭제됩니다.

가 변환됩니다 일시적 때까지 임시 디렉토리에 원본 파일을 보유 할 수있는 방법이 없을까하고 자동 자체 삭제됩니다?

예, Zend_File_Transfer없이 가면. 업로드 된 파일은 PHP 요청이 종료 될 때까지 임시 디렉토리에 자동으로 저장됩니다. 변환을 수행하는 경우 PHP가 끝나면 원래 임시 파일이 자동으로 삭제됩니다.

바라건대 그런 것들이 당신을 위해 약간 지워 버리길 바랍니다.

+0

'$ _FILES [ 'videofile'] [ 'tmp_name']'나를 위해 일했습니다. +1 – Sevenearths