2012-08-30 4 views
2

PHP을 사용하여 파일을 업로드하고 있습니다. 업로드가 완료되면 호출되는 액션의 서버 측에서 단순히 : 문제는 내가 서버에 파일을 저장하지 않으있다PHP로 스트리밍 업로드

Array 
(
    [file] => Array 
    (
     [name] => space_needlenever_lonely_alone.mp3 
     [type] => audio/mp3 
     [tmp_name] => /srv/www/uploads/php1TCIY9 
     [error] => 0 
     [size] => 3768714 
    ) 

) 

:

<?php 
    print_r($_FILES); 
?> 

뭔가를 출력한다 디스크 (/srv/www/uploads/php1TCIY9). 실제로 MongoDB에 파일을 저장하려면 GridFS을 사용하고 싶습니다. 먼저 디스크에 파일을 저장하지 않고 PHP로 직접 스트리밍 할 수 있습니까? 디스크에 파일을 저장하려면 사용 권한 및 업로드와 관련된 PHP ini 구성과 같은 모든 종류의 두통이 필요합니다.

디스크에 쓰지 않고도 서버 측 페이지로 직접 바이너리 데이터를 스트리밍 할 수 있다면 websocket 연결이 멋질 것입니다.

또는 JavaScript 관점 (클라이언트 측)에서 MongoDB와 상호 작용하고 PHP와의 상호 작용을 건너 뛸 수 있습니까?

가능하지 않습니까?

답변

0

PHP 응용 프로그램은 파일 업로드가 완료 될 때까지 실행되지 않습니다. 이 때문에 PHP로는 불가능하다고 믿습니다.

+0

드래그 앤 드롭 지원을 위해이 훌륭한 자바 스크립트 라이브러리를 사용하고 있습니다 : http://www.github.com/weixiyen/jquery-filedrop 그리고 두 개의'XHR' 요청을합니다. 첫 번째는 클라이언트 쪽 http://pastie.org/4614156처럼 두 번째 XHR 요청은 PHP 작업 페이지에 대한 것입니다. – Justin

+0

@Justin, 클라이언트 측에서 사용하는 것은 PHP 코드가 어떻게 그리고 언제 실행되는지에 대한 일반적인 메커니즘을 변경하지 않습니다. – Brad

+0

바이너리 데이터를 PHP로 스트리밍하고'php : // input' 스트림을 읽음으로써 가능합니다. 그러나 이것은 HTTP 업로드로 취급되지 않으므로'$ _FILES' 배열. – Greg