2010-11-18 28 views
1

Varsayılan olarak symfony, dosyayı web/upload klasörüne yükler, böylece herkes tarafından erişilebilir olur. Her istekte kullanıcı kimlik bilgilerini bir dosyaya kontrol etmem gerekiyor. Bunu nasıl yapmalıyım?Symfony ile güvenli dosya yönetimi

cevap

5

Yüklemelerinizi/data/uploads gibi web kökünüzün dışına taşıyın. Bu durumda, kendi ProjectConfiguration dosyasında bu koymak gerekir:

sfConfig::set('sf_upload_dir' => sfConfig::get("sf_data_dir") . DIRECTORY_SEPARATOR . 'uploads'); 

tüm dosyalar kaydedilir alacak, her zaman yüklemeler klasörü belirtmek için sf_upload_dir kullanılan şartıyla.

  • ya bir 403 hata
  • veya dosya içeriğini yoluyla: kullanıcının erişimi vardır ve döner eğer

    çözümün ikinci bölümü, çek bir dosya adı alır yeni bir işlem, ihtiyacı Doğru Content-Type ve Content-Lenght başlıklarını ayarladıktan sonra readfile().

+0

Symfony'de readfile() yöntemini düzgün olarak nasıl çağırırım? – Dziamid

+0

Diğer işlevler gibi adlandırırsınız - bunu yapmak için "symfony" yolu yoktur. – Maerlyn

+0

Demek istediğim, doğrudan eylem tamponunda yazıyorsa, çıktı tamponuna doğrudan yazıyor. Daha sonra symfony başlıkları düzgün bir şekilde veremiyordu. Çıkışı ob_start() ile yakalayıp $ this-> getResponse() -> setContent()? – Dziamid