实现flash+php图片上传,两者各有分工:
flash负责打开browser,浏览我的电脑;
这里我们需要的flash方法有:
1.FileReference或者FileReferenceList类,负责浏览我的电脑,两者区别是,前者每次可以选择一个文件,而后者可以每次选择多个文件;
包 flash.net
类 public class FileReference
继承 FileReference -> EventDispatcher -> Object
语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9
FileReference 类提供了在用户计算机和服务器之间上载和下载文件的方法。 操作系统对话框会提示用户选择要上载的文件或用于下载的位置。 每个 FileReference 对象都引用用户磁盘上的一个文件并且具有一些属性,这些属性包含有关文件大小、类型、名称、创建日期、修改日期和创建者类型(仅限 Macintosh)的信息。
2.打开之后,我们可以使用FileFilter来限制选择文件的格式;
包 flash.net
类 public final class FileFilter
继承 FileFilter-> Object
语言版本 : ActionScript 3.0
Player 版本 : Flash Player 9
FileFilter 类用来指示在调用 FileReference.browse() 或 FileReferenceList.browse() 时,用户系统上的哪些文件显示在出现的文件浏览对话框中。 FileFilter 实例将被传递给 browse() 函数。 如果使用 FileFilter 实例,则 FileFilter 实例中未指定的扩展名和文件类型将被过滤掉,即用户在上载时无法选择这些类型。 如果未将 FileFilter 对象传递给 browse(),则对话框中将显示所有文件。
3.这些就够了
php负责后台的上传,这部分只要就只有一个函数move_uploaded_file
move_uploaded_file
(PHP 4 >= 4.0.3, PHP 5)
move_uploaded_file -- 将上传的文件移动到新位置
说明
bool move_uploaded_file ( string filename, string destination )
本函数检查并确保由 filename 指定的文件是合法的上传文件(即通过 PHP 的 HTTP POST 上传机制所上传的)。如果文件合法,则将其移动为由 destination 指定的文件。
如果 filename 不是合法的上传文件,不会出现任何操作,move_uploaded_file() 将返回 FALSE。
如果 filename 是合法的上传文件,但出于某些原因无法移动,不会出现任何操作,move_uploaded_file() 将返回 FALSE。此外还会发出一条警告。
这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。
代码部分:
AS代码:
- package
- {
- import flash.display.Sprite;
- import flash.events.Event;
- import flash.events.MouseEvent;
- import fl.controls.Button;
- import flash.net.FileReference;
- import flash.net.FileFilter;
- public class Main extends Sprite
- {
- public var file:FileReference;
- public var btn:Button;
- public var arr:Array;
- public var imgfilter:FileFilter;
- public var swffilter:FileFilter;
- public var ureq:URLRequest;
- public function Main()
- {
- file = new FileReference();
- btn = new Button();
- imgfilter = new FileFilter("Image", "*.png;*.jpg");
- btn.label = "browser";
- btn.emphasized = true;
- btn.width = 150;
- btn.move(100, 100);
- ureq.url = "http://localhost/test/img/upload.php";
- btn.addEventListener(MouseEvent.MOUSE_DOWN, down);
- file.addEventListener(Event.COMPLETE, complete);
- file.addEventListener(Event.OPEN,open);
- file.addEventListener(Event.CANCEL, cancel);//点击取消按钮会广播这个事件
- file.addEventListener(Event.SELECT, select);
- addChild(btn);
- }
- public function down(e:MouseEvent):void {
- file.browse([imgfilter]);//browse的参数是以个FileFilter对象,限制文件选择的类型
- }
- public function complete(e:Event):void {
- trace("complete"+e);
- }
- public function open(e:Event):void {
- trace("open");
- }
- public function cancel(e:Event):void {
- trace("cancel");
- }
- public function select(e:Event):void {
- var tem = e.target;
- trace(tem.name + "," + tem.creationDate + "," + tem.size);
- file.upload(ureq);//选择结束后,开始上传
- }
- }
- }
复制代码
php代码:
- <?php
- $uploaddir = './uploads/';//设置存储路径
- $filename = $_FILES['Filedata']['name'];//获得选择的文件
- $uploadfile = $uploaddir . $filename;//存储文件路径
- $uploadfile = iconv('utf-8', 'gb2312', $uploadfile);//设置文件格式
- move_uploaded_file($_FILES['Filedata']['tmp_name'], $uploadfile);//开始上传
- ?>
复制代码