2008-06-21

FileReference 上傳後得知檔案大小

上傳圖檔時, 同時上傳資料, 可以參考之前舊文: FileReference 上傳圖檔

利用偵聽 uploadCompleteData (DataEvent.UPLOAD_COMPLETE_DATA) 事件即可解決

Frame Actions
var uploadURL:String = "upload_test.php";
var req:URLRequest = new URLRequest(uploadURL);
var file:FileReference = new FileReference();

// 設定偵聽器
file.addEventListener(Event.SELECT, myFileSelect);
file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA , myUploadCompleteData);

// 瀏覽上傳的檔案
file.browse([new FileFilter("Images", "*.jpg;*.gif;*.png")]);

// 選擇所欲上傳的圖檔後
function myFileSelect(e:Event):void{
file.upload(req);
}
// 上傳完成後
function myUploadCompleteData(e:DataEvent):void{
var data:String = e.data as String;
trace(data);
var filename = data.split('::')[0];
// 載入圖片
var picReq:URLRequest = new URLRequest(filename);
var pic:Loader = new Loader();
pic.load(picReq);
pic.y = 20;
this.addChild(pic);
// 秀出回傳的字串
var tf:TextField = new TextField();
tf.autoSize = 'left';
tf.text = data;
this.addChild(tf);
}

PHP
<?php
// 圖檔上傳後所欲存放的目錄
$up_dir = "./imgs/";
// 若目錄不存在, 則建立之
if(!is_dir($up_dir))
mkdir($up_dir, 0755);
// 取得上傳檔案的副檔名
$pos = strrpos($_FILES["Filedata"]["name"], ".");
if ($pos === false) {
$ext = "";
}else{
$ext = substr($_FILES["Filedata"]["name"], $pos);
}
// 檔案大小 bytes
$size = $_FILES['Filedata']['size'];
// 以隨機的字串為檔名
$uniq = md5(uniqid(rand(), true));
$up_file = $up_dir . $uniq . $ext;
// 將檔案放到設定的目錄內
move_uploaded_file($_FILES["Filedata"]["tmp_name"], $up_file);
chmod($up_file, 0777);

echo $up_file . '::' . $size;
?>

2 則留言:

islands 提到...

FileReference本身就有获取大小的属性.

Shinder 提到...

對耶, 謝謝告知 :D
一直都沒發現 :P

FB 留言