2013-12-07 9 views
6

सबमिट किए बिना फ़ाइल अपलोड करें क्या मैन्युअल रूप से फ़ॉर्म सबमिट किए बिना फ़ैंटॉमजेएस का उपयोग करके किसी निश्चित पृष्ठ पर फ़ाइल अपलोड करना संभव है? मुझे लगता है कि सामग्री-प्रकार: मल्टीपार्ट/फॉर्म-डेटा का उपयोग करके कुछ संभव है।फ़ैंटॉमजेएस - फॉर्म

https://github.com/ariya/phantomjs/blob/master/examples/imagebin.js पर उदाहरण ठीक काम कर रहा है, लेकिन मैं सीधे किसी भी तत्व के साथ बातचीत किए बिना POST अनुरोध में फ़ाइल भेजना चाहता हूं।

कोई सुझाव?

आप (xhr2 के रूप में बहुत ज्यादा

+0

क्या आपको इसका कोई समाधान मिला? – themiurgo

+0

@Ros - आपको लगता है कि वहां एक संभावित उत्तर की शुरुआत हो रही है, कृपया देखें कि क्या आप इसे अपने निष्कर्ष को और स्पष्ट रूप से बताने के लिए इसे फिर से लिख सकते हैं। –

उत्तर

3

फ़ाइल अपलोड AJAX से अधिक किया जा सकता है धन्यवाद - अगर आप पुराने ब्राउज़र का समर्थन करने की जरूरत है, jQuery-File-Upload की तरह कुछ का उपयोग, वहाँ a good tutorial here यह सिर्फ अपलोड हिस्सा करने के लिए उपयोग करने पर, और ब्लूंप के यूआई का उपयोग नहीं करते हैं।) यह आपके प्रश्न के भाग "मैन्युअल रूप से सबमिट किए बिना" से संबंधित है। फ़ाइल को चुनने के लिए आपको अभी भी फ़ाइल अपलोड तत्व से बातचीत करने की आवश्यकता होगी, और यही वह जगह है जहां आप page.uploadFile() का उपयोग करते हैं।

पूरी तरह से जावास्क्रिप्ट से ऐसा करने के लिए, "पृष्ठ पर किसी तत्व के साथ बातचीत" के बिना, आप कुछ कस्टम जावास्क्रिप्ट चलाने के लिए page.evaluate() का उपयोग कर सकते हैं। इसके बाद स्थानीय डिस्क पर फ़ाइल ढूंढने के लिए File Reader API का उपयोग कर सकते हैं, इसे ब्लॉब में स्टोर करें, फिर AJAX पर उस ब्लॉब को अपलोड करें। फ़ैंटॉमजेएस (लगभग क्रोम 13 के बराबर) में वेबकिट काम करना चाहिए, जाहिर है कि फाइलरिएडर एपीआई क्रोम 6 के बाद से रहा है।

(बीटीडब्ल्यू, यदि आप जो करना चाहते हैं वह एक हेडलेस स्क्रिप्ट का उपयोग कर सर्वर पर फ़ाइल अपलोड करना है , फ़ैंटॉमजेएस अधिक है, और आप curl का उपयोग कर सकते हैं। लेकिन मुझे लगता है कि आप किसी अन्य कारण से फ़ैंटॉमजेएस का उपयोग करना चाहते हैं!)

+1

कृपया डाउनवॉटिंग पर टिप्पणी करने के लिए अच्छे शिष्टाचार करें। (मैंने अभी इस जवाब को फिर से पढ़ा है और मुझे अभी भी लगता है कि यह सिर्फ एक अच्छा जवाब नहीं है, लेकिन सही है - मुझे ओपी के समान समस्या है, और मैंने कई बार मेरे सभी सुझावों का उपयोग किया है। इसलिए मैं यह जानकर बहुत उत्सुक हूं कि आपको ऐसा क्यों लगता है कि यह गलत है।) –

0

समाधान जो मैंने अंत में उपयोग किया है वह है नोडजेएस और फैंटॉमजेएस का मिश्रण मुझे कुछ प्रक्रिया को फोर्क करने की आवश्यकता है और नोडजेएस "अनुरोध" मॉड्यूल का उपयोग करके फ़ाइल अपलोड करें और फिर पृष्ठ के आउटपुट को फ़ैंटॉमजेएस पर वापस भेजें, जिसे मैन्युअल रूप से संसाधित करने की आवश्यकता है।

संबंधित मुद्दे