flash+php实现图片上传

 

 

 实现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。此外还会发出一条警告。
这种检查显得格外重要,如果上传的文件有可能会造成对用户或本系统的其他用户显示其内容的话。

代码部分:

 

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 ); // 开始上传
?>

转载于:https://www.cnblogs.com/ladeng6666/archive/2009/02/17/1392797.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值