2012-06-28 5 views
2

PHP로 FTP 업로드를 스트리밍 할 수 있습니까? 다른 서버에 업로드해야하는 파일이 있으며 FTP를 통해서만 해당 서버에 액세스 할 수 있습니다. 불행히도,이 서버에서 타임 아웃 시간을 늘릴 수 없습니다. 이 모든 것이 가능합니까?FTP로 FTP를 FTP로 업로드 할 수 있습니까?

기본적으로 파일의 일부분을 쓰고 한 번에 전체를 업로드하는 대신 다음 부분을 추가하고 반복하는 방법이 있다면 저를 구할 수 있습니다. 그러나, 인터넷 검색은 나에게 대답을 제공하지 못했습니다.

달성 가능합니까?

+0

코드 또는 프런트 엔드를 통해 전송됩니까? – Brian

+0

이 작업은 서버 측에서 수행해야합니다. – Nathanael

+0

흥미로운 사례! 나는 파일 서버 측을 만들고 파일 시스템에 실제 파일을 만들지 않고 즉시 다른 서버에 업로드하려고 할 때 같은 문제가있다. 클라우드 서버, 아시다시피 :) – Sliq

답변

1

확인을 클릭하십시오. ... 이것은 당신이 찾고있는 것일 수 있습니다. 당신은 컬 (curl)에 익숙합니까?

CURL는 FTP에 대한 추가 지원 :

curl_setopt ($ ch를, CURLOPT_FTPAPPEND, TRUE)를; // APPEND FLAG

다른 옵션은 PHP 5 이후에 추가 할 수 있으므로 ftp : ///ftps : // streams을 사용하는 것입니다. ftp : //를 참조하십시오; ftps : // Docs. 접근하기가 더 쉬울 수도 있습니다.

0

원격 파일의 끝에 덩어리를 추가하는 가장 쉬운 방법은 FILE_APPEND 플래그 file_put_contents을 사용하는 것입니다

file_put_contents('ftp://username:pa‌​[email protected]/path/to/file', $chunk, FILE_APPEND); 

작동하지 않는 경우, 당신은 URL wrappers enabled in PHP이 없기 때문에 그것은 아마.


당신은 (수동 모드 등의 전송 모드)를 작성을 통해보다 강력하게 제어 할 필요하거나 php://temp (or the php://memory) stream에 대한 핸들로 ftp_fput를 사용 file_put_contents을 사용할 수없는 경우 :

$conn_id = ftp_connect('hostname'); 

ftp_login($conn_id, 'username', 'password'); 

$h = fopen('php://temp', 'r+'); 
fwrite($h, $chunk); 
rewind($h); 

// prevent ftp_fput from seeking local "file" ($h) 
ftp_set_option($conn_id, FTP_AUTOSEEK, false); 

$remote_path = '/path/to/file'; 
$size = ftp_size($conn_id, $remote_path); 
$r = ftp_fput($conn_id, $remote_path, $h, FTP_BINARY, $size); 

fclose($h); 
ftp_close($conn_id); 

(오류 처리 추가)

관련 문제