实现flash+php图片上传,两者各有分工:
flash负责打开browser,浏览我的电脑;
这里我们需要的flash方法有:
1.FileReference或者FileReferenceList类,负责浏览我的电脑,两者区别是,前者每次可以选择一个文件
而后者可以每次选择多个文件;
包 flash.net 类 public class FileReference 继承 FileReference -> EventDispatcher -> Object
Player 版本 : Flash Player 9
FileReference 类提供了在用户计算机和服务器之间上载和下载文件的方法。 操作系统对话框会提示用户选择要上载的文件或用于下载的位置。 每个 FileReference 对象都引用用户磁盘上的一个文件并且具有一些属性,这些属性包含有关文件大小、类型、名称、创建日期、修改日期和创建者类型(仅限 Macintosh)的信息。
2.打开之后,我们可以使用FileFilter来限制选择文件的格式;
包 flash.net 类 public final class FileFilter 继承 FileFilter-> Object
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);//开始上传
?>
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com