इस उदाहरण में, मैंने मंच पर एक बटन के साथ एक फ्लैश फ़ाइल बनाई है। जब आप उस बटन पर क्लिक करते हैं, तो फ्लैश बटन की छवि को एएसपीएक्स फ़ाइल में भेजता है जो इसे जेपीईजी के रूप में सहेजता है। जैसा कि आप देखेंगे कि यह DisplayObject
को BitmapData
ऑब्जेक्ट में खींचकर किया जाता है और इस तरह, आप DisplayObject
से प्राप्त किसी भी चीज़ के साथ बटन को आसानी से प्रतिस्थापित कर सकते हैं (जिसमें एक मूवी क्लिप भी शामिल है जिसमें एक पेंट एप्लिकेशन आदि के लिए कैनवास शामिल है) ।
मैं आपको फ्लैश तत्व के माध्यम से पहले और फिर .NET बैकएंड के माध्यम से चलाऊंगा।
फ्लैश
ASP.NET (या किसी अन्य बैकएंड) आप 3 पार्टी पुस्तकालयों की एक जोड़ी की जरूरत करने जा रहे हैं करने के लिए फ्लैश से इस तरह की एक जनित छवि भेजने के लिए। हमें एक जेपीईजी एनकोडर की आवश्यकता होगी (जिसमें फ्लैश नहीं है, लेकिन फ्लेक्स डू के हाल के संस्करण) जिन्हें हम एएस 3 कोर लिब http://code.google.com/p/as3corelib/ से प्राप्त कर सकते हैं। तार पर डेटा भेजने के लिए हमें बेस 64 एन्कोडर की भी आवश्यकता होगी। मैं डायनामिक फ्लैश से एक का उपयोग करूंगा, http://dynamicflash.com/goodies/base64/ पर उपलब्ध होगा।
इन्हें डाउनलोड करें और उन्हें अपनी हार्ड डिस्क (जैसे सी: \ lib फ़ोल्डर) पर कहीं समझदार निकालें।
मैंने एक नई AS3 फ़्लैश फ़ाइल बनाई और इसे अपलोडर.फला के रूप में सहेजा। मैंने मंच पर एक बटन घटक जोड़ा और इसे btnUpload नाम दिया। इसके बाद मैंने एक्शनस्क्रिप्ट सेटिंग्स संपादित की और क्लासपाथ में अपना सी: \ lib फ़ोल्डर जोड़ा। तब मैंने दस्तावेज़ को अपलोडर का वर्ग नाम दिया और फ़ाइल को सहेजा।
इसके बाद, मैं एक ActionScript फ़ाइल बनाया है और उसमें निम्नलिखित कोड कहा:
package
{
import flash.display.BitmapData;
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
import flash.utils.ByteArray;
import fl.controls.Button;
import com.adobe.images.JPGEncoder;
import com.dynamicflash.util.Base64;
public class Uploader extends MovieClip
{
// Reference to the button on the stage
public var btnUpload:Button;
// Encoder quality
private var _jpegQuality:int = 100;
// Path to the upload script
private var _uploadPath:String = "/upload.aspx";
public function Uploader()
{
btnUpload.addEventListener(MouseEvent.CLICK, buttonClick);
}
private function buttonClick(e:MouseEvent):void
{
// Create a new BitmapData object the size of the upload button.
// We're going to send the image of the button to the server.
var image:BitmapData = new BitmapData(btnUpload.width, btnUpload.height);
// Draw the button into the BitmapData
image.draw(btnUpload);
// Encode the BitmapData into a ByteArray
var enc:JPGEncoder = new JPGEncoder(_jpegQuality);
var bytes:ByteArray = enc.encode(image);
// and convert the ByteArray to a Base64 encoded string
var base64Bytes:String = Base64.encodeByteArray(bytes);
// Add the string to a URLVariables object
var vars:URLVariables = new URLVariables();
vars.imageData = base64Bytes;
// and send it over the wire via HTTP POST
var url:URLRequest = new URLRequest(_uploadPath);
url.data = vars;
url.method = URLRequestMethod.POST;
var loader:URLLoader = new URLLoader();
loader.load(url);
}
}
}
मैं नाम Uploader.as के साथ इस फ़ाइल FLA के बगल में बचा लिया।
मैंने एसडब्ल्यूएफ को अपनी Asp.NET वेबसाइट की जड़ में प्रकाशित किया। यह कोड मानता है कि आप जेपीईजी को 100% की गुणवत्ता के साथ अपलोड करना चाहते हैं और वह डेटा जो डेटा प्राप्त करेगी उसे upload.aspx कहा जाता है और साइट की जड़ में स्थित है।
ASP.NET
मेरी वेबसाइट की जड़ में मैं upload.aspx नाम के एक वेबफ़ॉर्म बनाया। .aspx फ़ाइल में, मैंने पृष्ठ निर्देश के अलावा सभी सामग्री को हटा दिया।
using System;
using System.IO;
public partial class upload : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Get the data from the POST array
string data = Request.Form["imageData"];
// Decode the bytes from the Base64 string
byte[] bytes = Convert.FromBase64String(data);
// Write the jpeg to disk
string path = Server.MapPath("~/save.jpg");
File.WriteAllBytes(path, bytes);
// Clear the response and send a Flash variable back to the URL Loader
Response.Clear();
Response.ContentType = "text/plain";
Response.Write("ok=ok");
}
}
वहाँ स्पष्ट रूप से इस तरह के पथ को बचाने लेकिन इस से आप में सक्षम होना चाहिए के रूप में हार्ड-कोडेड मान हैं:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="upload.aspx.cs" Inherits="upload" %>
फिर codebehind में
, मैं निम्नलिखित कहा: यह इस तरह की सामग्री वर्णन दिया गया है जो भी सिस्टम आपको चाहिए उसे बनाएं।
क्या यह एएस 2 या एएस 3 है? –
यह एएस 3 होगा। – EfficionDave