2011-06-21 16 views
5

Ben GWT projesi (web uygulaması) üzerinde çalışıyorum: bir noktadaGWT: fileUpload.getFileName() & fakepath

, kullanıcılar bir FormPanel aracılığıyla uygulaması üzerinden bir dosya yükleyebilirsiniz.

ben dosya ihtiyacım gibi

, ben kullanabileceğini düşündüm: C:\fakepath\whatever.txt:

FileUpload upload = new FileUpload(); 
    // ... 
    String name = upload.getFileName(); 

Ve name böyle bir şey olduğu ortaya çıkıyor.

Bu çapraz platform mu? Diğer işletim sistemlerinde ne olur (Windows kullanıyorum)?

cevap

5

Bir yükleme formu tarafından döndürülen ad, tarayıcının güvenlik ayarlarına bağlıdır.

Pencerelerde, C: \ fakepath dosyanın gerçekte nerede olduğunu belirsizleştirmek için kullanılır. Bununla birlikte, dosya adı her zaman korunur.

Diğer os'larda da aynı şey olabilir, C: \ fakepath (örneğin, hangi linux'ların geri dönebileceğine dair% 100 emin değil).

Şu anda GWT tabanlı bir sistemde FileUpload; ve kullanılan dosya os'lerinin herhangi birinde dosya adı yanlıştır (sadece farklı (sahte) yollar). Bu Windows, Ubuntu ve OS/x'de kullanıldı. En son "/" veya "\" ile ayırarak doğru dosya adını güvenli bir şekilde alabilmeniz gerekir (bunlar, OS için farklıdır) veya bunun için getFileName yöntemini kullanın :).

+3

'C: \ fakepath' öneki, HTML5'te [" özelliğe göre "dir (http://www.w3.org/TR/html5/number-state.html#file-upload-state). Tüm işletim sistemlerinde tüm tarayıcıları, zaten yapılmadığı takdirde davranışlarını güncellemek için bekliyoruz. HTML5 özelliğinden 'extractFilename' JavaScript işlevinin Java'ya aktarılması kolaydır. –