मैं एक एफ़टीपी सर्वर पर एक फाइल अपलोड करना चाहता हूं, लेकिन फाइल सामग्री एक वैरिएबल में आयोजित की जाती है, वास्तविक वास्तविक फ़ाइल में नहीं। मैं एक फ़ाइल का उपयोग करने से बचना चाहता हूँ; यह (संभवतः) गैर-सुरक्षित प्रणाली (*) पर संवेदनशील डेटा से निपटने के साथ-साथ फ़ाइल हैंडलिंग के पहले से ही कम (ओवरहेड) ओवरहेड को कम करने के लिए सुरक्षा जोखिमों से बचने के लिए है।स्ट्रिंग वेरिएबल (कोई स्थानीय फ़ाइल) से सामग्री के साथ एफ़टीपी साइट पर एक फाइल डालें
लेकिन PHP का एफ़टीपी एपीआई केवल ftp_put
फ़ंक्शन के माध्यम से स्थानीय फ़ाइलों से फ़ाइलों को अपलोड करने की पेशकश करता है या (जब फ़ाइल पहले से ही फ़ाइल हैंडल के रूप में खोली जाती है) ftp_fput
।
$tmpfile = tmpfile();
fwrite($tmpfile, $content);
fseek($tmpfile, 0);
ftp_fput($ftp, $filename, $tmpfile, FTP_BINARY);
वहाँ स्थानीय (PHP) स्थल पर सभी पर फ़ाइलों का उपयोग किए बिना एक सरल तरीका है:
वर्तमान में, मैं एक अस्थायी फ़ाइल जिसमें मैं अपलोड करने से पहले सामग्री लिखने के साथ इस समारोह का उपयोग करें?
वहाँ ftp_raw
जो मनमाने ढंग से आदेश भेजने के लिए इस्तेमाल किया जा सकता है, तो मैं PUT
आदेश मैन्युअल रूप से जारी कर सकता है, हालांकि मैं एक तरह से मैन्युअल रूप से डेटा चैनल पर डेटा लिखने के लिए नहीं दिख रहा है ...
मुझे नहीं पता कि यह महत्वपूर्ण है, लेकिन एफ़टीपी कनेक्शन एसएसएल (ftp_ssl_connect
) के साथ सुरक्षित है।
(*) केवल पढ़ने के लिए परिदृश्य में जहाँ एक हमलावर है पूरे फाइल सिस्टम पर नियंत्रण पर विचार करें।
http://php.net/manual/en/function.fopen.php
और फिर fwrite का उपयोग कनेक्शन के लिए स्ट्रिंग लिखने के लिए:
क्यों इस परम समाधान नहीं है, यह है क्योंकि यह एक तरह से hacky है, या क्योंकि यह जोखिम पैदा करता है? – Martijn
@ मार्टिजन वेल, मेरे लिए यह सिर्फ हैकी लगता है - कोई सुरक्षा चिंता नहीं है। मैं 'ftp_puts' (स्ट्रिंग तर्क से डेटा डाल) की तरह कुछ ढूंढ रहा था, जो अस्तित्व में प्रतीत नहीं होता है। आम तौर पर, PHP का प्रोटोकॉल "रैपर" एपीआई ऐसी लापता एपीआई कार्यक्षमता को बाधित करने की अनुमति देता है, जो मुझे हैकी लगता है लेकिन "काल्पनिक" फ़ाइलों के साथ कुछ करने का "सामान्य" तरीका प्रतीत होता है, जब कुछ अन्य एपीआई केवल हैंडलिंग फाइलें प्रदान करता है जैसे एफ़टीपी एपीआई। किसी को यह सुरुचिपूर्ण लग सकता है, किसी और को यह हैकी लगता है। ;) – leemes