2011-09-07 18 views
5

पर एक दूरस्थ फ़ाइल अपलोड करने के लिए जावास्क्रिप्ट का उपयोग करके मैं अपने सर्वर पर एक छवि फ़ाइल बनाने के लिए PHP का उपयोग कर रहा हूं। अब मुझे इसे किसी तीसरे पक्ष के सर्वर पर POST के माध्यम से अपलोड करने की आवश्यकता है। इसे पूरा करने के लिए सर्वर साइड कर्ल स्क्रिप्ट का उपयोग करना सबसे आसान होगा, लेकिन मुझे इसे अपने क्लाइंट के माध्यम से करना है, क्योंकि इसे क्लाइंट और तृतीय पक्ष सर्वर के बीच सक्रिय सत्र के संदर्भ में अपलोड करने की आवश्यकता है। सवाल यह है कि मैं इसे सबसे आसान कैसे प्राप्त कर सकता हूं?मेरे सर्वर पर किसी तृतीय पक्ष सर्वर

  1. क्या एचटीएमएल फॉर्म या AJAX कॉल का उपयोग करना संभव है और इसे यूआरएल देकर छवि अपलोड करना संभव है? बात यह है कि तीसरी पार्टी बैक एंड यूआरएल स्वीकार नहीं करती है, इसे प्रदर्शित करने की जरूरत है जैसे कि यह एक वेब फॉर्म के माध्यम से अपलोड किया गया था ...

  2. यदि यह संभव नहीं है, तो मैं एक AJAX का उपयोग करने के बारे में सोच रहा था छवि को डाउनलोड करने और सामग्री को एक चर में सहेजने के लिए कॉल करें। फिर एक ऐसा फॉर्म बनाएं जो छवि की सामग्री अपलोड करता है जैसे कि फ़ॉर्म में स्थानीय फ़ाइल का चयन किया गया था। मुझे इसे कैसे पूरा करना चाहिए?

जब मैं एक वेब फार्म के माध्यम से एक फ़ाइल अपलोड करें और HTTP हेडर को देखने भेजा जा रहा है मैं कुछ इस तरह देखें:

------WebKitFormBoundary3ygta7rqeBm1krBO 
Content-Disposition: form-data; name="MAX_FILE_SIZE" 

10000000 
------WebKitFormBoundary3ygta7rqeBm1krBO 
Content-Disposition: form-data; name="uploadedfile"; filename="test.jpg" 
Content-Type: image/jpeg 


------WebKitFormBoundary3ygta7rqeBm1krBO-- 

मैं इस प्रारूप में इस तरह की स्ट्रिंग बनाना चाहिए और फिर सबमिट कि एक AJAX कॉल के माध्यम से डेटा के रूप में? मैं वास्तविक बाइनरी छवि डेटा कहां रखूं? मुझे लगता है कि क्रोम डेवलपर टूल्स उस डेटा को दबाने ...

किसी भी पॉइंटर्स के लिए धन्यवाद।

उत्तर

1

मुझे लगता है कि सबसे आसान लगता है कि आपने जो कहा है, इसे अपने सर्वर के माध्यम से तीसरे पक्ष में अपलोड करें। क्या आपके PHP स्क्रिप्ट के माध्यम से उपयोगकर्ता के सत्र से जो कुछ भी प्राप्त करने का कोई तरीका है?

अन्यथा, आप क्लाइंट को वापस भेजने की कोशिश कर सकते हैं (शायद AJAX के माध्यम से) कुछ एन्कोडेड प्रारूप में छवि, बेस 64 की तरह, आपके सर्वर के उत्पन्न होने के बाद, फ़ाइल को तृतीय पक्ष में भेजने के लिए कस्टम XHR बनाएं।

var boundary = this.generateBoundary(); 
var xhr = new XMLHttpRequest; 

xhr.open("POST", this.form.action, true); 
xhr.onreadystatechange = function() { 
    if (xhr.readyState === 4) { 
     alert(xhr.responseText); 
    } 
}; 
var contentType = "multipart/form-data; boundary=" + boundary; 
xhr.setRequestHeader("Content-Type", contentType); 

for (var header in this.headers) { 
    xhr.setRequestHeader(header, headers[header]); 
} 

// here's our data variable that we talked about earlier 
var data = this.buildMessage(this.elements, boundary); 

// finally send the request as binary data 
xhr.sendAsBinary(data); 

("XMLHttpRequest ऑब्जेक्ट" अनुभाग के नीचे) अधिक जानकारी के लिए यहाँ देखें::
http://igstan.ro/posts/2009-01-11-ajax-file-upload-with-pure-javascript.html

.. यहाँ एक नमूना है
संबंधित मुद्दे