- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
快速版本:
如何将用户浏览器上生成的图像返回到服务器?
目前的计划是这样的:
WebService
这将使用 StreamReader
阅读帖子并将其保存为文件。 最佳答案
在本例中,我创建了一个在舞台上带有按钮的 Flash 文件。当您单击该按钮时,Flash 会将按钮的图像发送到一个 ASPX 文件,该文件将其另存为 JPEG。正如您将看到的,这是通过绘制 DisplayObject
来完成的。成BitmapData
对象,因此,您可以轻松地使用从 DisplayObject
继承的任何内容替换对按钮的引用。 (包括包含用于绘画应用程序等的 Canvas 的影片剪辑)。
我将首先向您介绍 Flash 元素,然后介绍 .NET 后端。
快闪
要将生成的图像从 Flash 发送到 ASP.NET(或任何其他后端),您将需要几个 3rd 方库。我们需要一个 JPEG 编码器(Flash 没有,但最新版本的 Flex 有),我们可以从 AS3 Core Lib http://code.google.com/p/as3corelib/ 中获得。 .我们还需要一个 base64 编码器来通过网络发送数据。我将使用 Dynamic Flash 中的一个,可从 http://dynamicflash.com/goodies/base64/ 获得.
下载这些并将它们解压缩到硬盘上的某个位置(如 C:\lib 文件夹)。
我创建了一个新的 AS3 Flash 文件并将其保存为 uploader.fla。我向舞台添加了一个按钮组件并将其命名为 btnUpload。接下来,我编辑了 ActionScript 设置并将我的 c:\lib 文件夹添加到类路径中。然后我给文档一个类名 Uploader 并保存文件。
接下来,我创建了一个 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);
}
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="upload.aspx.cs" Inherits="upload" %>
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");
}
}
关于asp.net - 如何将图像从 Flash 传递到 ASP.NET?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/928508/
我是一名优秀的程序员,十分优秀!