müşteri için bir dosya göndermek

5 Cevap php

Ben PHP ile sunucuya bir metin dosyası yazmak ve bu dosyayı indirmek için müşteri istiyorum.

Nasıl yapayım ki?

Esasen istemci sunucudan dosya indirmek gerekir.

5 Cevap

Zaten yayınlanan verilere ek olarak, denemek isteyebilirsiniz bir başlık var.

Onun sadece bir suggestion nasıl kendi ele alınması ve kullanıcı aracısı bunu görmezden seçti, ve nasıl biliyorsa sadece penceresinde dosyayı görüntüleyebilirsiniz geliyordu:

<?php

 header('Content-Type: text/plain');         # its a text file
 header('Content-Disposition: attachment');  # hit to trigger external mechanisms instead of inbuilt

Rfc2183 Content-Disposition başlığına daha fazla bilgi için bkz.

PHP dosyaları yazma için çok basit, C-gibi fonksiyonların bir numarası vardır. Burada kolay bir örnek:

<?php
// first parameter is the filename
//second parameter is the modifier: r=read, w=write, a=append
$handle = fopen("logs/thisFile.txt", "w");

$myContent = "This is my awesome string!";

// actually write the file contents
fwrite($handle, $myContent);

// close the file pointer
fclose($handle);
?>

Bu çok temel bir örnek var, ama burada operasyon bu tür için daha fazla başvuru bulabilirsiniz:

PHP fopen

Sadece için sitede bir bağlantı sonrası http://www.mydomain.com/textfile.php

Ve bu PHP dosyasına aşağıdaki kodu koyun:

<?php
header('Content-Type: text/plain');
print "The output text";
?>

That way you can create the content dynamic (from a database)... Try to Google to oter "Content-Type" if this one is not the one you are looking for.

Bu kullanıcı dosyasının gerçek URL'sini görmek istemiyorum düşünürken, bunu yapmak için en iyi yoldur.

<?php
  $filename="download.txt";
  header("Content-disposition: attachment;filename=$filename");
  readfile($filename);
?>

Ayrıca, mod_access modülü ile dosyalarınızı korumak olabilir.

Eğer içerik türü application / octet-stream ayarlarsanız, tarayıcı DAİMA bir yükleme olarak dosya sunacak, ve olursa olsun ne tür bir dosya, dahili görüntülemek girişimi asla.

<?php
  filename="download.txt";
  header("Content-type: application/octet-stream");
  header("Content-disposition: attachment;filename=$filename");

  // output file content here
?>