php - Dosya indirme kutusu

5 Cevap php

Ben sadece kullanarak ... bir csv dosyası indirmek için bir kullanıcıya bir bağlantı veriyorum

Click <a href="report.csv">here</a> to download your file.

Bu metin ve bağlantı açılan küçük pencerede görüntülenir ediliyor - yüksekliği 100 genişliği 400.

Sonra dosya istedikleri yerde kaydedilir sonra sorun yok - kullanıcı "kaydetmek" tıklarsa

Onlar "açık" seçim olsa eğer csv dosya daha sonra açılan küçük pencerede görüntülenir. Hangi değil, ben istediğim t - Ben excel dosyasını açmak ve görüntülemek için excel tercih, hatta "açık" butonuna olası bir seçenek olabilir devre dışı olur.

Herhangi Ben de elde edebilirsiniz nasıl fikir?

Teşekkürler,

5 Cevap

Ben .. Eğer bazı javascript kullanarak bu açılan kutuyu açıyoruz varsayalım ben / göstermek dont küçücük "indirme" açılır kutusunu açmak yerine bir web sayfasında bu bağlantıyı göstermek için öneririm. Yani biri linke tıkladığında dosyayı indirmek için tarayıcı zorlamak ve bunu açmak istiyorlarsa ve muhtemelen geniş Browswer pencereleri boyutu olduğu gibi bir görünüm elde edebilirsiniz.

/ / Sadece, örneğin, bir zip dosyası indir zorlamak için, başlıkları olarak gönderin

// Set headers
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Disposition: attachment; filename=$file");
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: binary");

Bu dosya türü hangi uygulama tarafından açıldığı gibi hangi kullanıcıların ayarları üzerinde hiçbir güç yok. Onlar ayarlarına gidin ve dosya ilişkilendirmesi değiştirmek zorunda kalacak. Ancak, zihin değil herkes ayı Excel yüklü, bu nedenle bu özel uygulamada csv dosyasını açmaya zorlamak için iyi bir fikir değil.

Ben de size Aç seçeneği devre dışı sanmıyorum, bu da o ya da pencereyi görüntülemek olmayacağını ya da vb doğrudan ilişkili uygulamayı başlatacak olup, web tarayıcınızın yapılandırması tarafından dikte edilir .. bu bitti gibi görünüyor özel durumda şanslar.

Ben bu işletim sistemi düzeyinde ve değiştirilemez inanıyorum.

Bir yarım çözüm etiketi için target="_blank" ekliyor. Bu şekilde kullanıcılar, 'açık' seçeneğini seçtiğinizde, en azından dosya yeni açılacak (tam ekran, ya da en azından ölçülendirilebilir) penceresi.

Ceejayoz belirtildiği gibi bu başka, sen pencerenin davranışlarını değiştiremezsiniz.

  • Emin Bu noktada daha önce başka bir çıkış yapmazsanız olun
  • Csv dize oluşturun ve $ csvString saklayın
  • O $ csv_filename uygun dosya adını ver
  • Başlıklar excel yüklemek için tarayıcı söylemelidir

    header("Cache-Control: maxage=1");

    header("Pragma: public");

    header("Content-Type: application/vnd.ms-excel");

    header("Expires: 0");

    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");

    header("content-disposition: attachment;filename=$csv_filename");

    echo $csvString;