Nasıl php den ftp bir yükleme devam edebilirsiniz

3 Cevap php

Ben çok düşük bant genişliği, düşük güvenilirlik bağlantısı olan bir yerden bir ftp sunucuya dosyaları yükler bir php-komut dosyası var. Şu anda ftp functions of php kullanıyorum.

Bazen bağlantı transferinin ortasında düşer. Daha sonra yükleme devam etmek için bir yolu var mı? Bu nasıl yapılabilir?

Edit: People misunderstood that this is happening from a browser. However, this is not the case. It is a php cli script. So it is about a local file being uploaded to ftp, no user interaction.

3 Cevap

Uzak dosyanın boyutunu almak ve daha sonra fark APPE ftp komutu veren sahipsiniz. Bu dosyaya ekler. http://webmasterworld.com/forum88/4703.htm bir örnek için bkz. Bu üzerinde gerçek kontrol istiyorsanız, PHP'nin cURL işlevlerini kullanmanızı öneririz.

Ben tüm önceki cevaplar yanlış olduğunu düşünüyorum. PHP bu FTP_AUTODESK aktive edilmelidir için, özgeçmiş yönetmek ve yükleme sırasında FTP_AUTORESUME etkinleştirmek gerekiyor. Kod böyle bir şey olmalı:

$ftp_connect = ftp_connect($host, $port);
ftp_set_option ($ftp_connect, FTP_AUTOSEEK, TRUE);
$stream = fopen($local_file, 'r');
$upload = ftp_fput($ftp_connect, $file_on_ftp, $stream, FTP_BINARY, FTP_AUTORESUME);
fclose($stream);

EDIT: Look here. A very simple and good example.

Böyle bir şey yapabilirsiniz:

<?php
     $host = 'your.host.name';
     $user = 'user';
     $passwd = 'yourpasswd';

     $ftp_stream = ftp_connect($host);

     if ( ftp_login($ftp_stream,$user,$passwd) ){
        //activate passive mode
        //ftp_pasv($ftp_stream, TRUE);

        $ret = ftp_nb_put($ftp_stream, $remotefile, $localfile, FTP_BINARY,FTP_AUTORESUME);
        while ( FTP_MOREDATA == $ret ) {
            // continue transfer
            $ret = ftp_nb_continue($ftp_stream);
        }

        if (FTP_FINISHED !== $ret){
           echo 'Failure occured on transfer ...';
        } 
     }
     else {
         print "FAILURE while login ...";

     }

     //free
     ftp_close($ftp_stream);
?>