Formlarda dosya yükleme
4 dk okuma
Bir formdaki Image veya File alanı dosya seçici gösterir. Dosya, formun geri kalanıyla birlikte yüklenir, kontrol edilir ve Media Library'ye eklenir. Alan da eki saklar.
Hangi alanlar
- Image ve File alanları: bir alan grubunun (yazı, profil ve kayıt formları) ya da bir veri tablosunun sütunları (giriş formları).
- Bunlar üst düzey alanlar olmalıdır. Bir Group veya Repeater içindeki yükleme desteklenmez; böyle bir kapsayıcı düzenleyicide Not available in forms olarak işaretlenir.
- Gallery alanları formlarda kullanılamaz.
İzin verilen dosya türleri
Bunları alanın kendisinde ayarlayın: alanı alan grubunda (veya veri tablosu sütununda) açın ve Allowed file types alanını doldurun (Type settings): "Comma-separated extensions, e.g. jpg, png, pdf. Leave empty to allow all."
Alan ayarı | Kim yükler | Neye izin verilir |
|---|---|---|
Allowed file types dolu | herkes | Tam olarak bu uzantılar (WordPress'in izin verdiği ölçüde). |
boş | dosya yükleme yetkisi olan bir kullanıcı ( | WordPress'in izin verdiği her dosya türü. |
boş | diğer herkes (misafirler, aboneler) |
|
herhangi biri | bir Image alanı | Yalnızca gerçek görseller. |
Misafirler için varsayılan liste, arşivleri, betikleri ve çalıştırılabilir dosyaları Media Library'nizin dışında tutar. Bunu wpmcf/forms/guest_file_types filtresiyle değiştirebilirsiniz (filtre uzantı listesini ve alanı alır).
Dosya seçici yalnızca izin verilen türleri gösterir (tarayıcının accept listesi); bu bir kolaylıktır, asıl kontrol sunucuda yapılır.
Neler kontrol edilir
Henüz hiçbir şey oluşturulmadan önce (yazı, kullanıcı veya satır yok) her dosya kontrol edilir:
- Boyut. Dosya sınırdan (aşağıda) büyük olmamalıdır.
- Yükleme tamamlandı mı. Boş veya yarıda kalmış bir yükleme reddedilir: "The file for "CV" could not be uploaded."
- Tür. WordPress dosyanın içeriğine ve adına bakar. Uzantıya izin verilmeli, ayrıca içerik uzantıyla uyuşmalıdır:
cv.pdfolarak yeniden adlandırılmış bir metin dosyası reddedilir;.php,.exeve.jsdosyaları da öyle. Image alanında dosyanın ayrıca okunabilir bir görsel olması gerekir.
Herhangi bir kontrol başarısız olursa gönderimin tamamı reddedilir ve form mesajı alanın yanında gösterir: "The file for "CV" is not an allowed type." / "The file for "CV" is larger than 2 MB." Hiçbir şey kaydedilmez. Ziyaretçinin dosyayı yeniden seçmesi gerekir (tarayıcılar dosya seçimlerini saklamaz).
Boyut sınırı
Varsayılan sınır, sunucunuzun yükleme sınırı ile 10 MB değerinden küçük olanıdır. Sunucu sınırı, WordPress'in bildirdiği şekliyle PHP'nin upload_max_filesize / post_max_size değerleridir (Media › Add New bunu gösterir; küçük barındırmalarda çoğunlukla 2 MB). PHP sınırını aşan bir dosya eklentiye hiç ulaşmaz; PHP sınırı eklentiye bildirdiyse ziyaretçi formu "The file for "x" is larger than ..." mesajıyla yeniden görür. İsteğin tamamı post_max_size değerinden büyükse PHP isteği tümüyle bırakır ve ziyaretçi hiçbir mesaj görmeden sayfayı yeniden alır.
Eklentinin sınırını değiştirmek için filtreyi kullanın:
add_filter( 'wpmcf/forms/upload_max_bytes', function ( int $bytes, $field, $context ): int {
return 5 * MB_IN_BYTES; // 5 MB for every file field
}, 10, 3 );$field alan tanımıdır (hangi alan olduğunu $field->key söyler), $context ise form (bir FormDTO) ya da bir form bağlantısı üzerinden gelen dosyalar için bağlantıdır. Filtreyi PHP sınırlarının üzerine çıkarmak PHP sınırlarını yükseltmez: sunucuda upload_max_filesize ve post_max_size değerlerini de değiştirin.
Dosya nereye gider
Giriş oluşturulduktan sonra dosya Media Library'ye eklenir (normal wp-content/uploads/year/month klasörü altında, güvenli bir dosya adıyla), küçük resimleri oluşturulur ve ek kimliği alana kaydedilir:
Form türü | Ek şuna bağlanır | Ekin yazarı |
|---|---|---|
Yazı | yeni yazı | giriş yapmış kullanıcı, misafirse hiçbiri |
Kullanıcı profili / kayıt | yazı yok | kullanıcı |
Veri tablosu girişi | yazı yok | giriş yapmış kullanıcı, misafirse hiçbiri |
Ekin başlığı, uzantısız dosya adıdır.
Giriş kaydedildikten sonra bir dosya saklanamazsa (örneğin disk doluysa) giriş kalır ve başarı mesajına "The file for "CV" could not be saved." notu eklenir; ziyaretçi notu okuyabilsin diye bu durumda Redirect to adresiniz kullanılmaz. Bir giriş formunda, saklanamayan zorunlu bir dosya sütunu tüm gönderimin başarısız olmasına yol açar ve onun için daha önce saklanan dosyalar yeniden silinir. Dosyalar saklandıktan sonra bir giriş formu başka bir nedenle başarısız olursa bu dosyalar da silinir.
Düzenleme: değiştirme veya kaldırma
Bir form, zaten dosyası olan mevcut bir yazıyı veya kullanıcıyı düzenlediğinde alan dosyanın adını, bir Remove onay kutusunu ve dosya seçiciyi gösterir:
- yeni bir dosya seçerek değiştirin;
- alanı temizlemek için Remove kutusunu işaretleyin;
- dosyayı korumak için hiçbir şey yapmayın.
Ziyaretçi yalnızca girişin zaten sahip olduğu dosyayı koruyabilir: sayfaya yazılan bir ek kimliği yok sayılır, böylece kimse başka birinin medyasını ekleyemez.
Bilmeniz gerekenler
- Yüklenen dosyalar, her ek gibi Media Library'de herkese açıktır ve misafirlerin dosyaları URL'lerinden görülebilir. Bu yolla gizli bilgi toplamayın.
- Misafirlerin yüklemeleri Media Library'nize düşer. Hız sınırını açık tutun ve kitaplığı zaman zaman gözden geçirin (Misafirler ve spam koruması).
- Virüs taraması yoktur.
- Alan başına bir dosya. Birden fazla dosya için birden fazla alan ekleyin.
- Dosya sütunlu bir form bağlantısı kullandığınızda, diğer form eklentilerinin topladığı dosyalara da aynı kontroller uygulanır.
Hâlâ takıldınız mı? Destek ile iletişime geçin