2010-12-27 12 views
7

jest możliwe pobranie pliku większego niż 200 MB na mój serwer bezpośrednio, tak, że nie muszę pobierać tego pliku na komputer, a następnie przesłać za pomocą mojego klienta ftp. i jak nie używam ssh nie mogę użyć wget. Myślałam o php lub za lub CGI może być .. (otwarty na wszelkie pomysły ..)Pobieranie plików na serwer WWW z innej witryny za pomocą php

+==============+         +--------+ 
| Big server | -----------+    +--->|web host| 
+==============+   | +------+  | +--------+ 
          +-->| MyPC |-----+  | 
           +------+    |  +========+ 
                 +---->| client | 
                  +========+ 

lub

+============+ 
| Big Server | ---+ 
+============+ |      +----------+ 
        +--------------------->| Web Host | 
             +----------+ 
              | 
    +------+         |  +========+ 
    | MyPC |         +----->| client | 
    +------+          +========+ 

plz help ....

+1

Jakie masz dostęp do serwera WWW? Tylko panel administracyjny, dostęp do powłoki? –

+0

co jest dostępne na twoim serwerze, jakie masz uprawnienia? – helle

+0

Nie mam dostępu do powłoki tylko ftp; – voldyman

Odpowiedz

7

Dla cURL

$url = "http://path.com/file.zip"; 
$fh = fopen(basename($url), "wb"); 
$ch = curl_init($url); 
curl_setopt($ch, CURLOPT_FILE, $fh); 
curl_exec($ch); 
curl_close($ch); 
+0

curl częściowo działa, ale tworzony plik to 0 ukąszeń. .. – voldyman

+1

to w końcu zadziałało, ponieważ mój host zamknął ruch wychodzący na porcie 80. w kodzie nie było błędu ... – voldyman

1

W PHP można pobrać plik z tym:

<?php 
$in = fopen('http://example.com/', 'r'); 
$out = fopen('local-file', 'w'); 
while(!feof($in)) { 
    $piece = fread($in, 2048); 
    fwrite($out, $piece); 
} 
fclose($in); 
fclose($out); 
?> 

to wymaga dwóch rzeczy:

  • Plik lokalny musi być zapisywalny przez serwer WWW
  • allow_url_fopen musi być aktywowany na serwerze WWW
+1

copy() może być łatwiejsze? –

+0

zmodyfikował trochę stronę (akx.x10.mx/akx/down.php) Mogę pobierać pliki z mojego serwera, ale inne serwery dają następujący błąd "nie udało się otworzyć strumienia: połączenie przekroczyło limit czasu w/*** "edytuj: och właśnie zobaczyłem, że allow_url_fopen jest wyłączone ....... (:( – voldyman

4

w php najłatwiej jest prawdopodobnie:

<?php 
copy('http://server.com/big.file','/local/path/big.file'); 
?> 

jednak powinno być w stanie wykonać wget. zwłaszcza jeśli zewnętrzny fopen jest wyłączona na serwerze, który jest bardzo prawdopodobne

używając php prostu lubię:

<?php 
chdir('/where/i/want/to/download/the/file/'); 
system('wget http://server.com/big.file'); 
?> 

lub

<?php 
system('wget -O /where/i/want/to/save http://server.com/big.file'); 
?> 

curl jest inny sposób. możesz wykonać polecenie powłoki lub użyć curl php.

również upewnić się folder (lub plik), które chcesz pobrać do jest zapisywalny

+0

metoda kopiowania i systemowa pokazują błąd 500 – voldyman

+0

wygląda wtedy jak ograniczenie serwera, –