如何将图像从 Flash 传递到 ASP.NET?
快速版本:
如何将用户浏览器上生成的图像返回到服务器?
目前的计划是这样的:
- Flash 开发人员将位图转换为 JPEG,
- 然后将 JPEG POST 到网站上的页面。
- 我想我可以创建一个
WebService
,它将使用StreamReader
读取帖子并将其保存为文件。
那行得通吗? 有任何现有的代码/示例可以执行此操作吗?
我想我们应该能够查看将任何文件上传到 ASP.NET 的代码。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
在此示例中,我创建了一个在舞台上带有按钮的 Flash 文件。 当您单击该按钮时,Flash 会将按钮的图像发送到 ASPX 文件,该文件将其保存为 JPEG。 正如您将看到的,这是通过将
DisplayObject
绘制到BitmapData
对象中来完成的,因此,您可以轻松地将对该按钮的引用替换为从继承的任何内容>DisplayObject
(包括包含绘画应用程序等画布的影片剪辑)。我将首先引导您了解 Flash 元素,然后介绍 .NET 后端。
Flash
要将这样生成的图像从 Flash 发送到 ASP.NET(或任何其他后端),您将需要一些第 3 方库。 我们需要一个 JPEG 编码器(Flash 没有,但最近版本的 Flex 有),我们可以从 AS3 Core Lib http://code.google.com/p/as3corelib/。 我们还需要一个 Base64 编码器来通过线路发送数据。 我将使用 Dynamic Flash 中的一个,可在 http://dynamicflash.com/goodies/base64/< /a>.
下载这些文件并将它们解压到硬盘上的某个合适位置(例如 C:\lib 文件夹)。
我创建了一个新的 AS3 Flash 文件并将其另存为 uploader.fla。 我向舞台添加了一个按钮组件并将其命名为 btnUpload。 接下来,我编辑了 ActionScript 设置并将我的 c:\lib 文件夹添加到类路径中。 然后我为文档指定了一个类名称 Uploader 并保存了文件。
接下来,我创建了一个 ActionScript 文件并向其中添加了以下代码:
我将此文件保存在 FLA 旁边,名称为 Uploader.as。
我将 SWF 发布到我的 Asp.NET 网站的根目录中。
此代码假设您要上传质量为 100% 的 jpeg,并且接收数据的脚本名为 upload.aspx,位于网站的根目录中。
ASP.NET
在我网站的根目录中,我创建了一个名为 upload.aspx 的 WebForm。 在 .aspx 文件中,我删除了除页面指令之外的所有内容。 它的内容如下所示:
然后在 CodeBehind 中,我添加了以下内容:
显然有硬编码值,例如保存路径,但从中您应该能够创建您需要的任何系统。
In this example, I've created a Flash file with a button on the stage. When you click that button, the Flash sends the image of the button to an ASPX file which saves it out as a JPEG. As you'll see this is done by drawing the
DisplayObject
into aBitmapData
object and as such, you can easily replace the reference to the button with anything that inherits fromDisplayObject
(including a movie clip that contains the canvas for a paint application etc).I’ll walk you through the Flash element first and then the .NET backend.
Flash
To send a generated image like this from Flash to ASP.NET (or any other backend) you’re going to need a couple of 3rd party libraries. We’ll need a JPEG Encoder (which Flash doesn’t have, but recent versions of Flex do) which we can get from the AS3 Core Lib http://code.google.com/p/as3corelib/. We’ll also need a base64 encoder for sending the data over the wire. I’ll use the one from Dynamic Flash, available at http://dynamicflash.com/goodies/base64/.
Download these and extract them somewhere sensible on your hard disk (like a C:\lib folder).
I created a new AS3 Flash file and saved it as uploader.fla. I added a button component to the stage and named it btnUpload. Next I edited the ActionScript settings and added my c:\lib folder to the classpath. Then I gave the document a class name of Uploader and saved the file.
Next, I created an ActionScript file and added the following code to it:
I saved this file next to the FLA with the name Uploader.as.
I published the SWF into the root of my Asp.NET website.
This code assumes you want to upload the jpeg with a quality of 100% and that the script which will receive the data is called upload.aspx and is located in the root of the site.
ASP.NET
In the root of my website I created a WebForm named upload.aspx. In the .aspx file, i removed all the content apart from the page directive. It’s content look like this:
Then in the CodeBehind, I added the following:
There are obviously hard-coded values such as the save path but from this you should be able to create whatever system you require.
如果你需要操作图像,只要你能得到POSTed文件的一个byte[]或者一个Stream,你就可以创建它的图像,例如
If you need to manipulate the image, as long as you can get a byte[] or a Stream of the POSTed file, you can create an image of it, e.g.
让他像标准 HTML 表单一样发布文件。 您可以使用以下集合
Request.Files
在他要发布到的页面的 Page_Load 事件中访问这些文件。这将返回 HttpPostedFiles 集合,就像 FileUpload 控件所做的那样。
Have him post the files like a standard HTML form. You can access those files in the Page_Load event of the page he is posting to by using the following collection
Request.Files
This will return a collection of HttpPostedFiles just like what a FileUpload control does.