CSV MIME-türü nasıl kullanılır?


125

Üzerinde çalıştığım bir web uygulamasında, kullanıcı bir CSV dosyasına giden bağlantıya tıklayabilir. Mime türü için başlık seti yoktur, bu nedenle tarayıcı onu yalnızca metin olarak işler. Bu dosyanın bir .csv dosyası olarak gönderilmesini istiyorum, böylece kullanıcı onu calc, excel, gnumeric vb. İle doğrudan açabilir.

header('Content-Type: text/csv');
echo "cell 1, cell 2";

Bu kod bilgisayarımda beklendiği gibi çalışıyor (Her zaman böyle değil mi?) Ancak başka bir bilgisayarda çalışmıyor.

Tarayıcım her gece FF 3.0.1 (linux üzerinde) derlemesidir. Çalışmadığı tarayıcılar IE 7 ve FF 3.0 idi (Windows'ta)

Farkında olmadığım tuhaflıklar var mı?

Yanıtlar:


219

Aşağıdakiler gibi bir şey yaparak tarayıcıyı bir "Farklı Kaydet ..." iletişim kutusu açmaya zorlamayı deneyebilirsiniz:

header('Content-type: text/csv');
header('Content-disposition: attachment;filename=MyVerySpecial.csv');
echo "cell 1, cell 2";

Çoğu büyük tarayıcıda çalışması gereken.


12

Bir dil veya çerçeve belirtmiyorsunuz, ancak dosya indirmeleri için aşağıdaki başlık kullanılıyor:

"Content-Disposition: attachment; filename=abc.csv"

5

Internet Explorer ile indirme işleminin düzgün çalışması için sık sık Pragma: public üstbilgisini belirtmeniz gerekir.

header('Pragma: public');

Sadece 2 sentim ..


5
Pragma: public'in Internet Explorer için hiçbir anlamı yoktur. (Söz konusu bileşen üzerinde çalıştım ve kaynağı anladım).
EricLaw

Muhtemelen bunun asıl faydası, önceden var olan bir Pragma'yı değiştirmektir: önbelleksiz başlık?
Doin

2

Bu kod, csv dahil herhangi bir dosyayı dışa aktarmak için kullanılabilir

// application/octet-stream tells the browser not to try to interpret the file
header('Content-type: application/octet-stream');
header('Content-Length: ' . filesize($data));
header('Content-Disposition: attachment; filename="export.csv"');

2
"octetstream", "sekizli akışı" anlamına gelir
EricLaw

2
Bu, bazı tarayıcılarda bir uyarıya neden olabilir: Kaynak Belge olarak yorumlanır, ancak MIME tipi uygulama / octet-stream ile
aktarılır
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.