किसी को भी लगता है कि बस क्या है के साथ काम किया है और यह बहुत बुरा है तो यहाँ है कि मैं कैसे संभाला ...
इतिहास / पृष्ठभूमि
मैंने 2015 में एक सीवीजी अपलोडर बनाया था जो सीएसएस-ट्रिक्स लेख पर आधारित था जो कि देख रहा था। मुझे छवि पूर्वावलोकन के लिए ग्रिड भी काम कर रहा है, और कुछ अन्य फ़िक्सेस का उपयोग किया है। सरल प्लगइन (IMO फ़ाइल-प्रकार प्लग इन सरल होना चाहिए)
समाधान
4.7 के लिए कुछ बदलाव किए गए थे। वास्तविक पीटीए यह था कि image/
माइम प्रकारों के लिए WP अब छवियों पर GD का उपयोग कर रहा है। इसे बायपास करने के लिए मैंने svg
एक्सटेंशन का उपयोग करने के लिए सेट किया application/svg+xml
ताकि GD फ़ाइल के साथ गड़बड़ न हो।
अद्यतन: 4.7.2 के रूप में कुछ चमकीली चिंगारी टूट गई वह भी कुछ मामलों में
फिर बाद में हुक के माध्यम से हम इसे वापस गर्म कर देते हैं image/svg+xml
। इसका उपयोग अन्य उत्तरों में भी किया जाता है, लेकिन प्रभाव को खत्म करने के लिए हम सबसे पहले इसे अपने विशिष्ट मामले में बंद कर देते हैं (क्या यह एक एसवीजी फ़ाइल है); हम पढ़ने पर भरोसा कर सकते हैं $data['ext']
(केवल एक तुलना और एक सरणी / हैश एक्सेस के रूप में फ़ाइल जानकारी प्राप्त करने के लिए फ़ंक्शन से सस्ता होना चाहिए)।
अपडेट: जैसा कि 4.7.2 $data['ext']
हमेशा सेट नहीं होता है, इसलिए अब हम अगर लंबाई का उपयोग कर रहे हैं, तो फ़ाइल नाम का उपयोग करके <1 अर्क (संभावित असुरक्षित) एक्सटेंशन है
strtolower(end(explode('.', $filename)))
। फ़ाइलइन्फो का उपयोग करके वास्तव में लड़ने का कारण यह है कि अनिवार्य रूप से एक PHP एक्सटेंशन पर निर्भर होना बहुत अधिक अपारदर्शी है और यह हमेशा सभी के लिए काम नहीं करेगा (विशेषकर उन लोगों के बिना जो बिना एक्सटेंशन के या बिना एक्सेस के संकलित करते हैं अगर यह नहीं है)। मुझे ऐसा कुछ चाहिए जो किसी एक्सटेंशन के बदले काम करता हो। यह उन लोगों के लिए सही जानकारी होने की बात नहीं है जो आउटपुट के FileInfo
विस्तार और उन पर भरोसा करने के लिए हैं (मेरा मानना है कि यह 5.6+ में डिफ़ॉल्ट है) इसे काम करना चाहिए। इसके अलावा क्योंकि यह एक प्लगइन है, यह कोर को संशोधित नहीं कर रहा है आप इस कोड को बंद कर सकते हैं या हुक को अपंजीकृत कर सकते हैं।
https://github.com/Lewiscowles1986/WordPressSVGPlugin
देख
अन्य workarounds के
अनफ़िल्टर्ड अपलोड की अनुमति देना एक भयानक समाधान है क्योंकि जैसा कि अन्य ने कहा है कि इस थ्रेड को लिंक करने से लोग मीडिया अपलोडर के माध्यम से php फाइलें अपलोड कर सकते हैं (यह बुरा है और यदि आप इसे करते हैं, तो आपको रोकना चाहिए और सोचना चाहिए!)
चेक के बिना किसी भी फ़ंक्शन के माध्यम से हर फ़ाइल को मजबूर करना (विडंबना यह है कि यदि आपके पास image/
माइम प्रकार है तो आपके पास बस एक साधारण अतिरिक्त चेक नहीं हो सकता है)। यह एक अपेक्षाकृत आला समस्या को हल करने के लिए दूरगामी व्यापक प्रभाव पैदा करने की क्षमता रखता है और समग्र रूप से अधिक काम का परिचय देता है (मेरे प्लगइन भी व्यवस्थापक उपयोगकर्ताओं को काम करने के लिए अधिक मीडिया मीडिया UI को काम करने के लिए पेश करता है)
यदि हम माइम को एप्लीकेशन / svg + xml के रूप में छोड़ देते हैं और केवल माइम के प्रकारों को फ़िल्टर करते हैं, तो इमेज अपलोड होगी लेकिन क्या AFAIK को फीचर्ड इमेज आदि के रूप में उपयोग किए जाने के लिए फिक्स की आवश्यकता होगी। यूनिवर्सल एसवीजी अनुभव सुनिश्चित करने पर अधिक काम किया जाना है ताकि हमने इसे चुना। ध्यान से लड़ाई लेने के लिए।
उम्मीद है की यह मदद करेगा।
define( 'ALLOW_UNFILTERED_UPLOADS', true );
करने के लिएwp-config.php
। यह उत्पादन के लिए सुरक्षित नहीं है।