2009-02-28 13 views
10

मैं एक स्केच यह एक यहाँ की तरह फ़्लैश AS3 में किए गए पैड है: http://henryjones.us/articles/using-the-as3-jpeg-encoderमैं बाइटएरे (फ्लैश से) और कुछ फॉर्म डेटा को php पर कैसे भेज सकता हूं?

मैं php के साथ एक एचटीएमएल प्रपत्र क्षेत्र से सर्वर से जेपीजी और कुछ डेटा भेजना चाहते हैं। फ्लैश मूवी को छवि फ़ाइल वितरित करने के लिए मजबूर करने का कोई तरीका है जब कोई सबमिट बटन दबाता है?

उत्तर

5

यह थोड़ा मुश्किल है: आप इसे दो तरह से कर सकते हैं:

यह मैं बहुत मदद की थी: http://www.quietless.com/kitchen/upload-bitmapdata-snapshot-to-server-in-as3/

आप

Arthem एक और धागा में इस पोस्ट फ़ील्ड आवश्यकतानुसार नाम और फ़ाइल नाम डालने के लिए URLRequestWrapper को संशोधित करने की आवश्यकता है। यहां मैंने जो किया है:

बाइट्स = 'सामग्री-विस्थापन: फॉर्म-डेटा; नाम = "'+ $ फ़ील्डनाम +'"; फ़ाइल नाम = " ';

यह हेडर के सबसे स्वरूपण तो सर्वर यह एक फाइल अपलोड के रूप में समझ में है सकता है

वैसे, अगर आप एक BitmapData है आप इसे सांकेतिक शब्दों में बदलना करने के लिए आवश्यकता हो सकती है। JPEG या पीएनजी पहले

और मैं आम तौर पर इस समाधान का उपयोग:।

मैं imageshack एपीआई उपयोग नहीं किया है, लेकिन आप की हलचल का उपयोग कर प्रयास कर सकते हैं जेपीजीएनकोडर क्लास बनें - यहां एक त्वरित उदाहरण है जो उपयोगकर्ता नाम और जेपीजी की बाइट सरणी पास करता है, यह वास्तव में काफी सरल है।

private function savePicToServer(bmpData:BitmapData):void 
{ 
    var jpgEncoder:JPGEncoder = new JPGEncoder(85); 
    var jpgStream:ByteArray = jpgEncoder.encode(bmpData); 

    var loader:URLLoader = new URLLoader(); 
     configureListeners(loader); 

    var header:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream"); 
    var request:URLRequest = new URLRequest(ModelLocator.BASE_URL + ModelLocator.UPLOAD_URL + "?user=" + ModelLocator.getInstance().username); 
    request.requestHeaders.push(header); 
    request.method = URLRequestMethod.POST; 
    request.data = jpgStream; 
    loader.load(request); 
} 

ध्यान दें कि क्वेरी स्ट्रिंग के हिस्से के रूप में चर पारित किए जाते हैं। आप URLVariables का उपयोग नहीं कर सकते हैं, क्योंकि कई लोगों ने सुझाव दिया है, क्योंकि URLVariables अनुरोध की डेटा प्रॉपर्टी में संग्रहीत किया जाएगा, जिसे हम पहले से ही byteArray पास करने के लिए उपयोग कर रहे हैं।

0

आप डेटा भेजने के लिए HTTPService का उपयोग कर सकते हैं। Here's एक ट्यूटोरियल सॉर्ट परिचय।

+0

धन्यवाद! ... मैंने कभी फ्लेक्स का उपयोग नहीं किया। मै कोशिश करूँगा। –

0

यदि आप फ्लेक्स का उपयोग नहीं कर रहे हैं, तो POST चर के रूप में अपना डेटा पास करने के लिए URLLoader & & URLrequest आज़माएं।

+0

मैं पहले से ही करता हूं। समस्या यह है: मैं कुछ फॉर्म डेटा पोस्ट करना चाहता हूं। –

2

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

var stage_snapshot:BitmapData = new BitmapData(600, 120); 
var myRectangle:Rectangle = new Rectangle(0, 0, 600, 120); 
var myMatrix:Matrix = new Matrix(); 
var translateMatrix:Matrix = new Matrix(); 
translateMatrix.translate(-101, -33); 
myMatrix.concat(translateMatrix); 
stage_snapshot.draw(stage,myMatrix,null,null,myRectangle); 
trace ("creating JPGEncoder"); 
// Setup the JPGEncoder, run the algorithm on the BitmapData, and retrieve the ByteArray 
var encoded_jpg:JPGEncoder = new JPGEncoder(100); 
var jpg_binary:ByteArray = new ByteArray(); 
jpg_binary = encoded_jpg.encode(stage_snapshot); 
var pw = cryptoSalt.encrypt("mysecretpassword"); 
**var pwLength = pw.length; 
jpg_binary.writeMultiByte(pw,"us-ascii");** 
trace ("stage snapshot taken"); 
var header:URLRequestHeader = new URLRequestHeader ("Content-type", "application/octet-stream"); 
var request:URLRequest = new URLRequest("savejpg.php?length1=" + pwLength); 
request.requestHeaders.push(header); 
request.method = URLRequestMethod.POST; 
request.data = jpg_binary; 
var loader:URLLoader = new URLLoader(); 
trace ("sending pic to php"); 
loader.load(request); 
loader.addEventListener(Event.COMPLETE,finishSave); 

प्राप्त पीएचपी:

$pwlength = $_GET['length1']; 
$jpg = $GLOBALS["HTTP_RAW_POST_DATA"]; 
$pw = substr($jpg, - $pwlength); 
$jpg = substr($jpg,0,strlen($jpg) - $pwlength); 
$filename = 'uploads/test.jpg'; 
file_put_contents($filename, $jpg); 
file_put_contents("uploads/pw.txt",$pw); 
0

आप उपयोग कर सकते हैं AMFPHP या Zend AMF, मैं सिर्फ इस तरह एक परियोजना समाप्त होने पर, अपने उत्पाद के लिए एक उपयोगकर्ता एक उत्पाद का रंग योजना और उसके बाद bytearray उत्पादन को बदलने की अनुमति डेटा और सीधे पीएचपी करने के लिए अन्य AS3 वस्तु, और MySQL में डालें, तो आप see my project और AMFPHP

सभी PNG पारदर्शी छवियों फ्लैश द्वारा उत्पन्न कर रहे सकते हैं, और AMFPHP को भेजने, पीएचपी तो सर्वर पर PNG फ़ाइल उत्पन्न करते हैं।

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