限制Flex的Web App的上传文件格式和大小(服务器脚本PHP)
我发现这个伟大的教程,关于上传文件有一个Flex应用程序,使用PHP做服务器的脚本给我们。限制Flex的Web App的上传文件格式和大小(服务器脚本PHP)
http://hybridhacking.com/tutorials/uploading-files-with-flex-using-php
它的伟大,但我想知道是什么改变了我应该在的ActionScript这样做只接受图像文件,并且如果可能的话,以限制文件大小上载并显示一条消息时,这些条件之一被违反。
编辑
文件过滤器&大小限制器完成。代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute" width="800" height="500" showCloseButton="true"
creationComplete="init();">
<mx:Script>
<![CDATA[
private var urlRequest:URLRequest;
private var imagesFilter:FileFilter = new FileFilter("Images", "*.jpg;*.gif;*.png");
private var fileReferenceList:FileReferenceList;
protected var maxSize = 600;
private function init():void {
urlRequest = new URLRequest('com-handler/n-prod.php');
fileReferenceList = new FileReferenceList();
fileReferenceList.addEventListener(Event.SELECT, fileSelectedHandler);
}
private function uploadFile():void {
fileReferenceList.browse([imagesFilter]);
}
private function fileSelectedHandler(event:Event):void {
var fileReference:FileReference;
var fileReferenceList:FileReferenceList = FileReferenceList(event.target);
var fileList:Array = fileReferenceList.fileList;
// get the first file that the user chose
fileReference = FileReference(fileList[0]);
if (fileReference.size > maxSize)
{
statusText.text='File excedds max allowed';
} else {
// upload the file to the server side script
fileReference.addEventListener(Event.COMPLETE, uploadCompleteHandler);
fileReference.upload(urlRequest);
// update the status text
statusText.text = "Uploading...";
}
}
private function uploadCompleteHandler(event:Event):void {
statusText.text = "File Uploaded: " + event.target.name;
}
]]>
</mx:Script>
<mx:Label x="132" y="105" id="statusText"/>
<mx:Button x="132" click="uploadFile();" y="144" label="Button"/>
</mx:TitleWindow>
注意的maxSize
值是以字节为单位。
PHP代码:
<?php
$tempFile = $_FILES['Filedata']['tmp_name'];
$fileName = $_FILES['Filedata']['name'];
$fileSize = $_FILES['Filedata']['size'];
move_uploaded_file($tempFile, "./" . $fileName);
?>
FileReference类具有size属性。在将文件发送到服务器之前,您可以获取该属性的值,并根据您希望允许的最大大小进行检查。
package
{
import flash.display.*;
import flash.net.*;
import flash.events.*;
public class TestReference extends MovieClip
{
protected var maxSize = 600;
public function TestReference():void
{
var ref:FileReference = new FileReference();
ref.addEventListener(Event.SELECT, onFileSelect);
ref.browse();
}
private function onFileSelect(e:Event):void
{
if (e.target.size > maxSize) {
// do some error handling
}
}
}
}
退房的size property on FileReference获得以字节为单位的文件的大小。
当您拨打browse() on FileReference来挑选文件时,您可以传入一个FileFilter对象的数组。这将允许您限制允许的文件类型。
好,我设法做文件过滤器,但我不知道如何做大小限制器。你能帮助我吗? – 2009-10-15 23:37:58
我的感谢也帮助文件过滤器。 – 2009-10-16 10:31:03
用户选择文件后,检查大小。如果它太大,说他们必须选择一个较小的文件。您无法像过滤文件类型一样自动过滤上传对话框中的文件。 – joshtynjala 2009-10-19 19:34:09
我明白了。完成。谢谢。 – 2009-10-16 10:28:32