2010-11-21 17 views
2

Firefox 3.6 bazı öğeleri (Sürükle ve Bırak API'sini kullanarak) bir dizine bırakıp bu dosyaları FileAPI ile işleyelim. Bu dizinlerle nasıl çalışır?Javascript FileAPI: Yinelenen Dizinler?

Mac OS X Finder, bazı dizinleri Dosyalar (.app, .tmbundle, .abbu,…) olarak görüntüler. Çoğu durumda bu harika. Tarayıcı ile File- ve DND-API'leri ile etkileşimde bulunmuyorsa, bu değildir. Son kullanıcı, gerçek bir dosya ile my-addressbook-backup.abbu gibi bir dosya türü arasında ayrım yapamaz. Bu nedenle Javascript UI'nin dizin yapılarını tanımlayabilmesi gerekir. Yapıyı geçemezse, kullanıcıyı buna göre bilgilendirmelidir.

Ya bunların nasıl gerçekleştirilebileceğine dair herhangi bir fikir var mı?

Düzenleme:

Ben JS dizinlerden geçmesine izin verirken doğan (potansiyel) sorunları görebilirsiniz. Kendi başına bir dizin geçişi çağırıyorum (yapamayacağımı göstermeme rağmen). Foo.app (dosya tarafından Finder.app aracılığıyla görüldüğü gibi) bir dosya olarak (ama Terminal.app bakıldığında görüldüğü gibi) aslında bir dizin olarak ele alınan hakkında konuşuyorum. Dosya API şu anda herhangi bir çaprazlama mekanizması sağlamamaktadır. Yani, bir adres defteri-dump.abbu içindeki daha derin iç içe geçmiş dosyalar erişilebilir olmazdı. Bunu mümkün kılmak için herhangi bir düşünce var mı? Aksi takdirde OSX kullanıcılarına, adres defteri dosyalarının bir arşivini (örn., ZIP) yapmaları ve zip (aslında JS'de okuyabildiğim) "yüklemesini" söylemem gerekir. Bu bir çözüm olsa da, bir çözüm değil.

+0

http://www.html5rocks.com/en/tutorials/file/filesystem umut vaat ediyor – rodneyrehm

cevap

3

Tanımladığınız şey, FileReader API'si ile yapılabilir. Örneğin, this demo bir .zip dosyasını (hit load photos.zip) okur, içeriğini paketinden çıkarır ve içerdiği resimlerin listesini kullanıcıya gösterir.

Genel klasörler için sürükle ve bırak işleminde Chrome/WebKit'i geri tutan iki hata var: 1, 2. Bu düzeltmeler yapıldığında, bir klasörü OS'den bir <input type="file" webkitdirectory> ürününe sürükleyip tüm hiyerarşisini hareket ettirebilirsiniz. webkitdirectory numaralı telefonu görmek için Chrome'da this demo'a bakın.

+0

ZIP örneği (zaten benim sorularımda belirtilmiştir) oldukça kötü bir çözümdür. Dosya sistemi API'sini şu ana kadar bile bilmiyordum. Bunun için sabırsızlanıyorum :) – rodneyrehm