Nasıl bir web tarayıcısı üzerinden sunulmakta bir dosyayı açmak için harici bir program soruyorsun?

2 Cevap php

Ben bir iki bir sorum var. İlk ben think ben için iyi bir cevabım var ....

Ben şirket üzerinde çalışan bir uygulama için bir yapılandırma dosyasını görüntülemek kadar çağrılacak harici bir program zorlamak için arıyorum. Sanırım temel özü uygulama ile ilişkilendirilmesi, ve sonra dosyanın içeriğini hizmet ettiğini yazmak için Content-type başlığı ayarlamak için. Ben bu gibi onun sadece yapılandırılmış düşünüyordum:

<?php
Header( "Content-type: application/blahtype" );
?>
output of xml configuration file goes here...

Burada başka iyi uygulamalar? Onlar adobe pdf gibi içerik türü, idare edecek kendi tarayıcısı yüklü bir eklenti yoksa Açıkçası kullanıcı, tüm tarayıcılarda evrensel bu dosyaya dış uygulama erişimine izin vermek zorunda olacak. Bu şu anda bizim şirket için geçerli değildir, bu yüzden onay ekranında yaşamak istiyorlar.

Sorunun ikinci kısmı biraz daha karmaşık, ben düşünüyorum. Nasıl kullanıcı uygulaması yüklü olup olmadığını algılamak ve bunlar yoksa, (bir kaydolma sayfası veya uygulama kendisini çalıştırılabilir) onlara farklı içerik hizmet ediyor? Ben farklı içerik hizmet lojistik merak, ama sadece algılama süreci değilim. Tarayıcılarda bir ömür boyu çerez yüklemek için bir uygulama makinede yüklü önbelleğe için mümkün mü? Kullanıcı elbette onların önbelleğini temizleyin, çünkü O, mükemmel bir çözüm değil. Bunu başka nasıl başarabilirsiniz?

Bunu yapmak program örnekleri (Aslında bu bir veya iki kez ile kötü bir duruma gotten) Amazon MP3 Downloader, ve iTunes U. Burada Stanfords CS193P sayfada iTunes U örnek görebilirsiniz: http://www.stanford.edu/class/cs193p/cgi-bin/index.php

Much appreciate any advice, Josh

2 Cevap

Sorunuzun parçası 1 için, sürece uygulama doğru olduğunu MIME türünü işlemek için kayıtlı olduğu gibi, o zaman evet, tarayıcı gerekir prompt the user and launch your application.

Alternatif bir yaklaşım, bir protocol handler olacaktır. Bunun yerine uygulama için bir MIME türünü tescil, sen http:// yerine, bir URL'ye gider bir "protokol" kayıt. Protokol denir Eğer myapp, sonra bu gibi bağlantıları oluşturabilirsiniz:

<a href="myapp:data-goes-here-urlencoded">Link</a>

Sadece bu şekilde küçük bir bilgi miktarda geçebilir ederken, uygulama, bir kez başlatılan, sunucudan tam belgeyi almak için kullanabileceğiniz bir GUID veya etiketi geçebileceği.

Edit: Sorunuzun bölüm 2 için, iTunes bir plug-in kullanır. ITunes yönlendirmek için kullanılan kod baktığımızda, böyle bir şey görürsünüz:

<Object id="iTunesDetector" height="1" classID="CLSID:D719897A-B07A-4C0C-AEA9-9B663A28DFCB" width="1"></Object>

Bu plug-in yüklü olup olmadığını tespit etmek için bazı JavaScript tarafından takip ediliyor. Eğer öyle olsaydı, o zaman iTunes yüklü olmalıdır ve (sadece yukarıdaki örnekte myapp: protokolü gibi) itms: protokolünü kullanarak iTunes başlattı.

Burada sorun, bir tarayıcı plug-in yazmak zorunda olduğunu.

Bu gibi şeyler için tarayıcı eklentilerini kullanarak içine bakmak iyi bir fikir olabilir.