Kimse ne ile çalışmamış gibi görünüyor ve bu çok kötü, bu yüzden işte böyle idare ediyorum ...
Tarih / Arka Plan
2015 yılında, ne olduğuna bakarak bir CSS-Tricks makalesine dayanarak bir SVG yükleyicisi oluşturdum. Ayrıca görüntü önizleme için ızgara var ve başka birkaç düzeltme kullandım. Basit eklenti (IMO dosya türü eklentileri basit olmalıdır)
Çözüm
4.7 için birkaç değişiklik oldu. Asıl PITA, image/
mim türleri için WP'nin görüntülerde GD kullanmasıydı. Bunu atlamak svg
için application/svg+xml
GD'yi dosyayla uğraşmayacak şekilde kullanmak için uzantıyı ayarladım .
Güncelleme: 4.7.2'den itibaren bazı durumlarda da bazı parlak kıvılcımlar kırıldı
Sonra daha sonra kanca ile geri hotwire image/svg+xml
. Diğer cevaplarda kullanılanla aynıdır, ancak öncelikle efektleri ortadan kaldırmak için özel durumumuza kilitleriz (bir SVG dosyası mıdır); okumaya güvenebiliriz $data['ext']
(sadece tek bir karşılaştırma ve bir dizi / karma erişimi olarak dosya bilgilerini almak için işlevden daha ucuz olmalıdır).
Güncelleme: 4.7.2'den itibaren $data['ext']
her zaman ayarlanmadı, bu yüzden artık uzunluğu kullanarak dosya adından <1 özü (potansiyel olarak güvenli olmayan) uzantı kullanıyoruz
strtolower(end(explode('.', $filename)))
. FileInfo'yu kullanarak gerçekten savaşmamın nedeni, aslında bir PHP uzantısına güvenmenin çok opak olması ve her zaman herkes için çalışmayacak olmasıdır (özellikle, uzantılar etkinleştirilemediğinde veya erişim olmadan derlemeyenler). Bir uzantının yerine çalışan bir şey rica ediyorum. Artık doğru bilgilere sahip olma meselesi değil, bu yüzden çıktısına güvenen FileInfo
ve uzantıya sahip olanlar için (5.6+ sürümünde varsayılan olduğuna inanıyorum) çalışmalıdır. Ayrıca bu bir eklenti olduğu için, bu kodu kapatabilir veya kancayı kaldırabilirsiniz.
https://github.com/Lewiscowles1986/WordPressSVGPlugin
Görmek
Diğer geçici çözümler
Filtrelenmemiş yüklemelere izin vermek korkunç bir çözümdür, çünkü diğerleri bu iş parçacığına bağlantı kurdukça insanlar medya yükleyici üzerinden php dosyaları yükleyebilir (bu kötü ve bunu yaparsanız, durup düşünmelisiniz!)
Her dosyayı kontrolsüz herhangi bir işlevle zorlamak (İronik bir şekilde image/
mime tipinde varsa, basit bir ext kontrolüne sahip olamazsınız). Bu, nispeten niş bir sorunu çözmek için çok daha geniş kapsamlı efektler yaratma potansiyeline sahiptir ve genel olarak daha fazla iş sunar (eklentimin uyarısı ayrıca yönetici kullanıcıların yönetici medya kullanıcı arayüzünün çalışması için daha fazla çalışma sağlar)
Mime'i application / svg + xml olarak bırakıp görüntünün yükleyeceği mime türlerini filtrelediğimiz, ancak AFAIK'ın özellikli bir görüntü olarak kullanılması için düzeltmeler gerektirdiğini vb. savaşları dikkatlice seçmek.
Bu yardımcı olur umarım.
define( 'ALLOW_UNFILTERED_UPLOADS', true );
içinwp-config.php
. Bu üretim için güvenli değildir.