2008-12-29 8 views
10

Apache 2 sunucum, URL bir .pln veya .psa uzantılı bir dosyaya işaret ediyorsa, dosya aktarım diyaloğu açmak için tarayıcıyı nasıl zorlar?Apache 2 sunucumun bir dosya aktarım diyaloğunu açmak için tarayıcıya nasıl zorlar?

CentOS 5, Apache 2, MYSQL 5, PHP 5, kısa bir süre önce oluşturulmuş CentOS 5.2 i386 yükleme CD'leri ile basit bir LAMP sunucum var. Web uygulamam indirilecek ve özel bir uygulamaya aktarılacak dosyaları oluşturur. Dosya uzantıları .psa ve .pln'dir. Sunucumu bir dosya aktarım diyaloğu açmak için tarayıcıya nasıl zorlar? Tarayıcımı Apache 2 sunucusunda bir .psa veya .pln dosyasına yönlendirirsem, dosyanın içeriği açılır pencerede basit metin olarak görüntülenir. Dosya transfer diyalogu istiyorum.

Üzerinde çalıştığım web uygulaması başka bir web sunucusunda konuşlandırıldı ve .pln ve .psa dosyalarını istediğiniz gibi işliyor. Sunucu yapılandırma dosyalarını karşılaştıramıyor çünkü çalışma sunucusuna yönetici erişimim yok.

Sunucumun davranışını nasıl değiştirebilirim? Bu, web uygulama kodumdaki kod değişikliklerini gerektiriyor mu (açık üstbilgileri göndermek gibi)? Eğer öyleyse, neden diğer sunucuya karşı çalışıyor? Sunucunun varsayılan davranışını yapılandırarak kod değişiklikleri önlenebilir mi?

Herhangi bir yardım

mutluluk duyacağız.

cevap

6

Gerekli başlığı eklemek için FilesMatch yönergesini kullanabilmeniz gerekir. tarayıcı seni görmezden ve cehennem seviyor :) söyledi

, çoğu tarayıcı ile kullanıcı isteyecektir yapabileceği beri

<FilesMatch "\.(?i:pin)$"> 
    Header set Content-Disposition attachment 
</FilesMatch> 
+0

Yukarıdaki satırları /etc/httpd/conf/httpd.conf dosyasına ekledim ve httpd hizmetini yeniden başlattım (pim yerine pln ile denedim). .psa ve .pln dosyaları hala tarayıcımda metin olarak görüntüleniyor. –

+1

Üzgünüm, uzantının yanlış. RegEx sözdizimi, "\. (? I: pln) | (? I: psa) $" .htaccess dosyanıza koymayı denediniz mi? Ayrıca, diğer Başlık satırından hemen önce Başlık ContentType uygulaması/octent satırını ekleyebilirsiniz. – palehorse

+2

Teşekkürler. Aşağıdakileri /etc/httpd/conf/httpd.conf dosyama eklemek sorunu çözdü. ForceType uygulama/bilinmeyen Başlık set İçerik Eğilimi eki Ben değişikliklerin etkili olması için Tarayıcımdaki (IE7) geçici internet dosyaları temizlemek zorunda kaldı. –

0

, her zaman zor bir önermeyi şey yapmak için bir tarayıcı olduğu zorlamak "İçerik türü" başlığı "application/octet-stream" olarak ayarlanmışsa "farklı kaydet" iletişim kutusu. Ya da istenen dosyayı doğru başlık ile işleyen basit bir sarmalayıcı cgi yazın ya da Apache2'nin mim türleriyle çalışın (config dizinine bakın.)

Bu, mutlu hacking (ve mutlu Noeller, Yeni Yıl veya Eğer orijinal MIME türü koruma sağlar beri

Misha

0

Ahh) kutlamak ne olursa olsun, o bir tane hatırlamak zorunda kalacak, muhtemelen daha iyi bir yol var, o başlık palehorse hakkında bilmiyordum.

+0

Uygulama/sekizliyi zorlamak istiyorsanız İçerik Türünü de bu yöntemi kullanarak ayarlayabilirsiniz. Sadece Başlık ContentType uygulamasını/octet'i ekleyin. Bu benim için biraz daha güvenilir. conf veya .htaccess ile yapmak, indirme dosyası komut dosyasından kaçınmak güzeldir. – palehorse

0

Görünür bir etkisi olmayan çeşitli yapılandırma değişikliklerini denedim. Ben Apache sunucusunu yeniden .psa

.pln

AddType application/sekizli-stream:

  1. benim /etc/httpd/conf/httpd.conf dosyasına aşağıdaki satırı eklendi ve hiçbir etkisi yoktu.

      Ben /etc/httpd/conf/httpd.conf dosyasına aşağıdaki satırları ekledi
    1. : ForceType uygulama/sekizli-stream Başlık İçerik Eğilimi eki set ForceType application/octet-stream Header seti Content-Disposition eklentisi Apache sunucusunu yeniden başlattım ve hiçbir etkisi olmadı.
+0

FilesMatch sözdizimini denediniz mi? – palehorse

+0

Evet. Yukarıdaki yorumlarımı görün. FilesMatch yönergesi sorunumu çözdü. –

0

Firefox'unuz varsa (ve değilse, neden olmasın?) Chris Pedericks Geliştirici Araç Çubuğunu yükleyin ve başlıkların doğru şekilde ayarlandığını kontrol edin. Eğer öyleyse, tarayıcının hatası olabilir. Dediğim gibi, belirli bir tarayıcının yanıt başlıklarını "doğru" yorumlayacağından emin olamazsınız. Burada hangi tarayıcıdan bahsediyoruz?

Başlıklar düzgün ayarlanmadıysa, httpd.conf dosyanızı yeniden kontrol etmeniz gerekebilir. Eklediğin direktifler doğru bölümde olmayabilir mi? (ör. yanlış <Konum> yönergesinin altında)