SORU
17 EYLÜL 2008, ÇARŞAMBA


Nasıl Firefox 3 HTML giriş formu dosya yolunu almak için

Aşağıda gösterildiği gibi <input type="file"> ile basit bir HTML Formu var:

<form>
  <label for="attachment">Attachment:</label>
  <input type="file" name="attachment" id="attachment">
  <input type="submit">
</form>

IE 7'de (ve muhtemelen tüm ünlü tarayıcıları da dahil olmak üzere eski Firefox 2), Eğer biz göndermek gibi bir dosya '//1/path/to/file/dosya' çalışıyor düzgün ve verdiği tam yolu ve dosya adı dosya.

Firefox 3, Bu sadece, çünkü onların yeni 'güvenlik' Firefox hata takip sistemi (https://bugzilla.mozilla.org/show_bug.cgi?id=143220) açıklandığı gibi yolunu kesecek . özelliği dosya adını döndürür

Bu 'yeni özellik' benim web uygulaması içinde tüm upload formları Firefox 3 çalışmamasına neden oluyor çünkü. üstesinden gelmek için nasıl hiçbir ipucu var

Herkes hem Firefox 3 ve IE 7 üzerinde dosya yolunu almak için tek bir çözüm bulmak için yardımcı olabilir misiniz?

CEVAP
30 Temmuz 2010, Cuma


IE 7'de (ve muhtemelen tüm ünlü tarayıcıları da dahil olmak üzere eski Firefox 2), Eğer biz göndermek gibi bir dosya '//1/path/to/file/dosya' çalışıyor düzgün ve verir tam yolu, dosya ve dosya adı.

Bu 'yeni özellik' benim web uygulaması içinde tüm upload formları Firefox 3 çalışmamasına neden oluyor çünkü. üstesinden gelmek için nasıl hiçbir ipucu var

Burada büyük bir yanlış anlaşılma var. Neden hiç ihtiyacın vartamsunucu tarafında dosya yolu? Müşteri olduğumu ve C:\path\to\passwords.txt bir dosya var ve sana tam dosya yolunu verdiğim düşünün. Nasıl bir sunucu olarak şimdiye kadar onun olsuniçindekiler? Yerel disk dosya sistemi açık TCP bağlantısı var mı? Farklı bir sunucu makine üzerinde üretime web getirdiğin zaman işlevselliği upload dosya test ettiniz mi?

Sadece ne zaman işe yarayacakher ikisi deistemci ve sunucuda çalışırfiziksel olarak aynısonra erişim yok çünkü makine,aynısabit disk dosya sistemi. Bu sadece yerel olarak web sitesi geliştirme ve böylece aynı makine de tesadüf çalışır hem tarayıcı (istemci) ve Web sunucusu (server) olduğunda ortaya çıkar.

Tam dosya yolunu MSIE gönderiliyor ve diğer antik webbrowsers bir bağlı olduğunugüvenlik hata. W3 RFC2388 özellikleri asla tam dosya yolunu söylemiş. Yalnızca dosya adı. Firefox düzgün işini yapıyor.

Yüklenen dosyaları işlemek için, tam dosya yolunu bilmek gerekmez. Tam dosya ilgilenmesi gerekir değiliçindekileristemci zaten multipart/form-data istek halinde istekte sunucuya vücut gönderdi. Formunuzu RFC2388 söyledi: aşağıdaki gibi değiştirin

<form action="upload-script-url" method="post" enctype="multipart/form-data">
    <input type="file" name="file">
    <input type="submit">
</form>

Sunucu tarafında yüklenen dosyanın içeriğini almak için nasıl kullanıyorsun sunucu tarafı programlama dili bağlıdır.

  • Java/JSP: HttpServletRequest#getPart() Apache Commons FileUpload API bunu ayrıştırmak için kullanmak istiyorum. Seni ihbar zevkinize OutputStream herhangi yazabilirsiniz dosya içeriği ile InputStream ile bitmelidir. this answer bir örnek bulabilirsiniz.

  • /AKSARAY Java: <h:inputFile> bileşen ya da kullandığınız herhangi bir diğer dosya upload bileşeni bileşen kütüphanesi tarafından sağlanan kullanmak istiyorum. Ayrıca burada, InputStream bir lezzet dosya içeriğini almak istiyorum. Bir örnek için this answer bkz.

  • PHP: dosya içeriğini zaten örtülü olarak geçici diskte depolanır. move_uploaded_file() istediğiniz yere taşımak için fonksiyonu kullanmak istiyorum. Ayrıca PHP manual bkz.

  • ASP.NETbunu ben değil, çünkü benden ayrıntılı bir cevap, ama Google benim için bazı örnekler buldu: ASP.NET example, ASP.NET 2.0 example

Dosya adı yüklenen dosyayı parçası elde etmek için istediğiniz zaman gerekirtrimtam yolu ve dosya adı. Bu Bilgi yani tamamen alakasız. Ayrıca Bkz örneğin bu 25**

Neden Fileİtem.() getName tam yolunu ve dosya adını döndürmek?

Internet Explorer yüklenen dosyayı değil, sadece temel dosya adına tüm yolu sağlar. FileUpload istemci (tarayıcı) tarafından temin edilen tam olarak sağladığından, uygulamanızda bu yol bilgileri kaldırmak isteyebilirsiniz.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BuzzFeedVideo

    BuzzFeedVide

    10 AĞUSTOS 2011
  • Greater Than Gatsby Photoshop Actions & Lightroom Presets

    Greater Than

    11 ŞUBAT 2013
  • wwjoshdo

    wwjoshdo

    25 Mayıs 2009