2014-07-07 3 views
0

그래서 사용자의 업로드가 이미지/비디오이고 어떤 유형인지 알아야합니다. 아니다 나는 그것을 필요 - 나는 현재는 PHP 페이지에서 결과를 메아리 그러나 제가 몰래 오전이PHP 시스템()은 에코를 유지합니다.

$s3file='http://'.$bucket.'.s3.amazonaws.com/'.$actual_image_name; 
$collection = static::db()->media; 
$datetime = time(); 
$mediaupload = array("owner"=>$_SESSION['user_information'][0]['_id'],"filelink"=>$s3file,"filetype"=>system("file -i -b ".$_FILES['file']['tmp_name']),"filesize"=>$size,"uploadtime"=>$datetime,"ownerid"=>$_SESSION["user_information"][0]['_id']); 
$collection->insert($mediaupload); 
$media = $collection->findOne($mediaupload); 

를 통해 내 MongoDB의 수집에 삽입

"filetype"=>system("file -i -b ".$_FILES['file']['tmp_name']) 

사용 해야 할 것. 나는 그것이 PHP 코드에 업로드 된 파일 형식을 반향하지 않기 때문에 그 기능을 제거하기 때문에 그것은 시스템 기능입니다 알아요.

나는 그 시스템 파일 -i -b 함수를 실행하여 MongoDB 데이터베이스에 포함 시키지만 그 결과를 공용 PHP 페이지로 반환하지 않을 수 있는지 궁금합니다.

답변

0

내 문제 (멀티 라인 출력) 같은 것을 시도

exec("file -i -b ".$_FILES['file']['tmp_name'], $output); 
array("filetype"=>$output); 

그것은 조금 정통 보일 수를 고정하는의 보이지만, exec는 출력 정보를 사용자에게 다시 전달하는 방법으로 두 번째 입력 매개 변수를 사용합니다. file의 출력은 $output에 배열로 저장됩니다.

From the docs

: 출력 인자가 존재하는 경우

후 지정된 배열 명령 출력의 각 행을 가득 것이다. 후행 공백 (예 : \ n)은이 배열에 포함되지 않습니다. 배열에 이미 일부 요소가 포함되어 있으면 exec()가 배열 끝에 추가됩니다. 함수에 요소를 추가하지 않으려면 배열에 unset()을 호출 한 다음 exec()에 전달합니다.

단순히 출력에서 ​​첫 번째 줄을 원하는 경우에, 간단한 버전 사용

array("filetype"=>exec("file -i -b ".$_FILES['file']['tmp_name'])); 
0

나는 (간부 인 할 수있는 시스템을 전환 한) 및 그

관련 문제