Dosya URI şeması - File URI scheme

dosya URI şeması bir URI şeması tanımlanmış RFC  8089, genellikle dosyaları kendi bilgisayarından almak için kullanılır.

Daha önce dosya URI şeması şurada belirtilmişti: RFC  1630 ve RFC  1738. İnternet Mühendisliği Görev Gücü (IETF) yayınlandı RFC 8089, sonraki RFC'yi "genel sözdizimine dayalı bir sözdizimi" ile güncelleme RFC  3986 bu, mevcut çoğu kullanımla uyumludur. "[1]

Biçim

Bir dosya URI'si şu biçimdedir:

dosya://ev sahibi/yol

nerede ev sahibi ... tam nitelikli alan adı sistemde yol erişilebilir ve yol formun hiyerarşik bir dizin yoludur dizin/dizin/.../isim. Eğer ev sahibi ihmal edilir, "localhost ", URL'nin yorumlandığı makine. Ana bilgisayar çıkarılırken eğik çizginin atlanmadığını unutmayın (while"file: ///foo.txt"geçerlidir"file: //foo.txt"değil, ancak bazı tercümanlar ikincisini idare etmeyi başarıyor).

RFC 3986 ".." ve "" tedavisine ilişkin ek bilgiler içerir. URI'lerde segmentler.

Kaç eğik çizgi?

  • // sonrasında dosya: ya bir ana bilgisayar adı ya da gerçek bir terim olduğunu belirtir localhost takip edecek,[2] ancak bu kısım tamamen atlanabilir veya boş bir ana bilgisayar adı içerebilir.[3]
  • Tek eğik çizgi ev sahibi ve yol URI'nin yerel yol kısmının başlangıcını gösterir ve mevcut olması gerekir.[4]
  • Bu nedenle geçerli bir dosya URI'si, dosya yolu, dosya yolu veya file: // ana bilgisayar adı / yol.
  • dosya yolu (yani bir ana bilgisayar adı olmadan iki eğik çizgi) hiçbir zaman doğru değildir, ancak sıklıkla kullanılır.
  • Daha fazla eğik çizgi yol dizinlerin ve alt dizinlerin hiyerarşik sisteminde ayrı dizin adları. Bu kullanımda, eğik çizgi parçaları ayırmanın genel, sistemden bağımsız bir yoludur ve belirli bir ana sistemde herhangi bir yol adında (Unix sistemlerinde olduğu gibi) olduğu gibi kullanılabilir.

Windows'un iki yolu vardır UNC dosya adları (örneğin serverfolderdata.xml) temsil edilebilir. Bunların ikisi de şurada açıklanmıştır: [5] "standart dışı" olarak. İlk yol (burada 2 eğik çizgi biçimi olarak adlandırılır), sunucu adını kullanarak Yetki URI'nin parçası olan ve daha sonra file: //server/folder/data.xml. İkinci yol (burada 4 eğik çizgi biçimi olarak adlandırılır), sunucu adını dosyanın bir parçası olarak göstermektir. Yol bileşen, dolayısıyla URI olur file: ////server/folder/data.xml. Her iki form da aktif olarak kullanılmaktadır. Microsoft .NET (örneğin, yöntem yeni Uri (yol)) genellikle 2 bölü çizgisini kullanır; Java (örneğin, yöntem yeni URI (yol)) genellikle 4 eğik çizgi biçimini kullanır. Her iki form da URI'ler üzerindeki en yaygın işlemlerin (göreli URI'leri çözme ve uzak dosyaya bağlantı elde etmek için başvuruyu kaldırma) başarıyla kullanılmasına izin verir. Ancak, bu URI'ler standart olmadığı için, daha az yaygın olan bazı işlemler başarısız olur: bir örnek, normalleştirmek operasyon (tanımlı RFC 3986 ve Java'da uygulanmıştır java.net.URI.normalize () yöntemi) azaltan file: ////server/folder/data.xml kullanılamaz hale dosya: /server/folder/data.xml.

Örnekler

Unix

İşte iki Unix aynı /vb/fstab dosya:

dosya: // localhost / etc / fstabfile: /// etc / fstab

pencereler

Aynı yerel dosyaya atıfta bulunarak, Windows sistemlerindeki bazı uygulamalar tarafından kabul edilebilecek bazı örnekler aşağıda verilmiştir. c:PENCERELERclock.avi

file: //localhost/c$/WINDOWS/clock.avifile: /// c: /WINDOWS/clock.avi

Windows Shell API tarafından anlaşılan URI şu şekildedir:[6]

file: /// c: /WINDOWS/clock.avi

Sürücü harfinin ardından iki nokta üst üste ve eğik çizginin kabul edilebilir dosya URI'sinin bir parçası olduğunu unutmayın.

Uygulamalar

pencereler

Microsoft Windows sistemlerinde, bir aygıt harfinden sonraki normal iki nokta üst üste (:) bazen dosya URL'lerinde dikey bir çubuk (|) ile değiştirilir. Bu, iki noktayı bir yol bölümünde ayrılmış bir karakter yapan orijinal URL sözdizimini yansıtıyordu.

Dan beri Internet Explorer 4, dosya URI'leri Windows'ta standartlaştırılmıştır ve aşağıdaki şemayı izlemelidir. Bu, URI'leri ayrıştırma, getirme veya bağlama için URLMON veya SHLWAPI kullanan tüm uygulamalar için geçerlidir. Bir yolu URL'ye dönüştürmek için şunu kullanın: UrlCreateFromPathve bir URL'yi yola dönüştürmek için şunu kullanın: PathCreateFromUrl.[6]

Bir "file.txt" dosyasına erişmek için aşağıdakiler kullanılabilir.

Bir ağ konumu için:

file: //hostname/path/to/the%20file.txt

Veya yerel bir dosya için, ana bilgisayar adı çıkarılır, ancak eğik çizgi yoktur (üçüncü eğik çizgiye dikkat edin):

dosya:///c: /path/to/the%20file.txt

Bu, "localhost" veya nokta "" dizesini sağlamakla aynı değildir. ana bilgisayar adı yerine. "Localhost" dizesi dosyaya şu şekilde erişmeye çalışacaktır: UNC yol localhostc: dosya.txt yolu, bu, bir paylaşım adında iki nokta üst üste kullanılmasına izin verilmediğinden çalışmaz. Nokta "." dize olarak iletilir .c: dosya.txt dosyasının yolu, yerel dosyalar için çalışacak, ancak yerel sistemdeki paylaşımlar için çalışmayacaktır. Örneğin file: //./sharename/path/to/the%20file.txt işe yaramayacak, çünkü sonuçlanacak paylaşım adı DOSDEVICES ad alanının bir parçası olarak yorumlanıyor, ağ paylaşımı olarak değil.

Aşağıdaki taslak, gereksinimleri kabaca açıklamaktadır.

  • Kolon kullanılmalı ve değil Internet Explorer için dikey bir çubukla değiştirilebilir.
  • Yolları sınırlandırmak için eğik çizgiler kullanılmalıdır.
  • Dosya adının parçası olan kare (#) veya soru işareti (?) Gibi karakterler yüzde olarak kodlanmış.
  • URI'larda izin verilmeyen, ancak dosya adlarında izin verilen karakterler de yüzde olarak kodlanmalıdır. Örneğin, "{}`^ "ve tüm kontrol karakterleri. Yukarıdaki örnekte, dosya adındaki boşluk% 20 olarak kodlanmıştır.
  • Hem URI'lerde hem de dosya adlarında izin verilen karakterler yüzde olarak kodlanmamalıdır.
  • Eski ACP kodlamaları kullanılmamalıdır. (ACP kod sayfaları, DOS CHCP veya Windows Kontrol Paneli dil ayarıyla belirtilir.)
  • Unicode karakterleri dışında ASCII aralık olmalı UTF-8 kodlanmıştır ve bu UTF-8 kodlamaları yüzde olarak kodlanmalıdır.

Mümkünse sağlanan işlevleri kullanın. Program aracılığıyla bir URL oluşturmanız gerekiyorsa ve SHLWAPI.dll'ye erişemiyorsanız (örneğin, komut dosyasından veya eşdeğer işlevlerin bulunmadığı başka bir programlama ortamından) yukarıdaki özet yardımcı olacaktır.

Eski URL'ler

Win32'de kurulu eski uygulamaların temeline yardımcı olmak için PathCreateFromUrl bu kriterleri karşılamayan belirli URL'leri tanır ve bunları tek tip olarak ele alır. Bunlar, "sağlıklı" dosya URL'lerinin aksine "eski" dosya URL'leri olarak adlandırılır.[7]

Geçmişte, çeşitli başka uygulamalar diğer sistemleri kullanmıştır. Bazıları ek iki eğik çizgi ekledi. Örneğin, UNC yolu remotehostsharedirfile.txt olacaktı file: ////remotehost/share/dir/file.txt "sağlıklı" yerine file: //remotehost/share/dir/file.txt.

internet sayfaları

Dosya URL'leri nadiren kullanılır internet sayfaları atanan ana bilgisayarda bir dosyanın var olduğunu ima ettikleri için halka açık İnternette. ev sahibi belirtici, belirli bir dosya alma protokolü belirtilmemesine rağmen, harici bir kaynaktan bir dosya almak için kullanılabilir; ve bunun kullanılması, kullanıcıyı bu makineye erişim için hiçbir mekanizmanın mevcut olmadığı konusunda bilgilendiren bir mesajla sonuçlanmalıdır.

Referanslar

  1. ^ "Dosya" URI Şeması. doi:10.17487 / RFC8089. RFC 8089. Alındı 16 Ekim 2018.
  2. ^ RFC 8089, Bölüm 2
  3. ^ RFC 3986, Bölüm 3.2.2
  4. ^ RFC 3986, Bölüm 3.3
  5. ^ RFC 8089, Ek E
  6. ^ a b Risney Dave (2006). "Windows'ta Dosya URI'leri". IEBlog. Microsoft şirketi. Alındı 2020-10-02.
  7. ^ 'Dosyanın' Tuhaf ve Mutsuz Hikayesi: URL'ler - Ücretsiz İlişkilendirmeler - Site Ana Sayfası - MSDN Blogları. Blogs.msdn.com (2005-05-19). Erişim tarihi: 2014-03-08.

Dış bağlantılar