8.17.启动图像上传

8.17.1. 问题
我需要使用户能通过Flex 上传图像,保存在服务器中。
8.17.2. 解决办法
创建一个FileReference 对象,并附加一个适当的滤镜,使用户只能上传正确类型的文件。然后监听FileReference 对象的完成事件,并上传图像文件到一个服务器端脚本。
8.17.3. 讨论
在flex 以及Flash 中上传在图片,依赖于使用FileReference 类。FileReference 对象,完成时,使用浏览器标准的上传窗口和图形创建一个窗口,并且当用户选择了一个上传的文件是通过Flash Player 上传图片。为FileReference 对象添加一个事件监听器表示用户已经选择了一个文件。
+展开
-ActionScript
fileRef.addEventListener(Event.SELECT, selectHandler);

这样添加了一个方法来上传用户选择的文件:
+展开
-ActionScript
private function selectHandler(event:Event):void {
var request:URLRequest =
new URLRequest("http://thefactoryfactory.com/upload2.php");
fileRef.upload(request, "Filedata"true);
}

文件上传以后,发送它道一个PHP 脚本来保存上传的图像:
+展开
-ActionScript
package oreilly.cookbook
{
import mx.core.UIComponent;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.net.URLRequest;
import flash.events.Event;
public class _8_17 extends UIComponent
{
private var fileRef:FileReference;
public function _8_17() {
super();
startUpload();
}
private function startUpload():void {
//set all the file types we're going to allow the user to upload
var imageTypes:FileFilter = new FileFilter("Images
(*.jpg, *.jpeg, *.gif, *.png)", "*.jpg; *.jpeg; *.gif; *.png");
var allTypes:Array = new Array(imageTypes);
fileRef = new FileReference();
fileRef.addEventListener(Event.SELECT, selectHandler);
fileRef.addEventListener(Event.COMPLETE,
completeHandler);
//tell the FileRefence object to accept only those image
//types
fileRef.browse(allTypes);
}
private function selectHandler(event:Event):void {
var request:URLRequest = new
URLRequest("http://thefactoryfactory.com/upload2.php");
fileRef.upload(request, "Filedata"true);
}private private function completeHandler(event:Event):void {
trace("uploaded");
}
}
}

因为文件已经上传,你需要处理服务器上的数据,移动文件到(在这种情况下) images 文件夹下
+展开
-PHP
$file_temp = $_FILES['file']['tmp_name'];
$file_name = $_FILES['file']['name'];
$file_path = $_SERVER['DOCUMENT_ROOT']."/images";
//checks for duplicate files
if(!file_exists($file_path."/".$file_name)) {
//complete upload
$filestatus = move_uploaded_file($file_temp,$file_path."/".$file_name);
if(!$filestatus) {
//error in uploading file
}
}

加支付宝好友偷能量挖...


评论(0)网络
阅读(67)喜欢(0)flash/flex/fcs/AIR