Bir ftp sunucuya php dosya oluşturma ve yükleme

2 Cevap php

Ben çalışma var 2 farklı süreçler bağlanma sorunu yaşıyorum. Ben, bir veritabanından veri çekerek verileri bir dosya oluşturarak, ve sonra bir ftp sunucuya yükleyerek ile görevli oldum.

Şimdiye kadar, ben dosyası oluşturulur ve bu kodu kullanarak indirilebilir, tam metin dosyasını içeren bir dize olan $ out olmak var:

if ($output == 'file')
{
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Length: ".strlen($out));
    header("Content-type: application/txt");
    header("Content-Disposition: attachment; filename=".$file_name);
    echo($out);
}

Ben sadece bir tarayıcıda komut dosyasını çalıştırın ve dosya indirmek istediğinizde bu çalışır, ancak ben bunun yerine bir ftp sunucuya göndermek için arıyorum.

Ben ftp sunucuya benim bağlantı gayet güzel çalışıyor, ve ben doğru doğru dizine navigasyona biliyorum, ve ben) diskten dosyaları alınır ve (ftp_put kullanarak ftp onları koyduk, ama ben almak için arıyorum $ out ve FTP sunucusu üzerindeki adı olarak $ dosya ile bir dosya olarak doğrudan yazmak. Bir şeyler yanlış okuma olabilir, ama ben ftp_put ve ftp_fput çalıştım, onlar dosya konumları, akarsu dosya değil, istediğiniz gibi görünüyordu. Ben düşünebiliriz, farklı bir işlevi var mı?

2 Cevap

Comments kod biçimlendirme görmezden beri yerine yorumların cevabı burada var.

Eğer deneyebilirsiniz:


$fp = fopen('php://temp', 'r+');
fwrite($fp, $out);
rewind($fp);       
ftp_fput($ftp_conn, $remote_file_name, $fp, FTP_ASCII);

Bu aslında diske yazmadan geçici bir akışı oluşturur. Ben başka bir yolunu bilmiyorum

Aslında ftp_put (bir dizge olarak) yerel dosya yolunu beklediğini, bu yüzden sunucu geçici bir dosyaya veri yazmayı deneyin ve daha sonra ftp_put


file_put_contents('/tmp/filecontent'.session_id(), $out);
ftp_put($ftp_conn, $remote_file_name, '/tmp/filecontent'.session_id());
unlink('/tmp/filecontent'.session_id()); 

Bu durumda size örnekte naklediyoruz başlıklarını göndermek gerekmez.