Sınır Flex Web App yükle dosya formatları ve boyut (sunucu komut dosyası PHP)

2 Cevap php

Ben bizim için sunucu komut dosyası yapmak için Php kullanarak bir Flex uygulaması ile dosya yükleme hakkında, bu büyük öğretici bulduk.

http://hybridhacking.com/tutorials/uploading-files-with-flex-using-php

Onun büyük, ama sadece görüntü dosyaları kabul eder, böylece i ActionScript ne yapması gerektiğini değişiklikleri bilmek istedim, ve mümkünse dosya boyutu yükleme sınırlamak ve bu koşullardan birinin ihlal edildiği bir mesaj göstermek için.

EDIT

File Filter & Size Limiter Done. Code:

<?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>

Value maxSize bayt olduğuna dikkat edin.

PHP-Kodu:

<?php
$tempFile = $_FILES['Filedata']['tmp_name'];
$fileName = $_FILES['Filedata']['name'];
$fileSize = $_FILES['Filedata']['size'];
move_uploaded_file($tempFile, "./" . $fileName);
?>

2 Cevap

FileReference sınıfı bir boyut özelliğine sahiptir. Sunucuya dosya göndermeden önce, size özelliğinin değerini alabilirsiniz ve izin vermek istediğiniz maksimum boyutu karşı kontrol edin.

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
    		}
    	}
    }
}

Bayt dosyanın boyutunu almak için size property on FileReference göz atın.

Eğer browse() on FileReference dosyasını almak için çağırdığınızda, FileFilter nesneleri bir Array iletebilirsiniz. Bu izin dosyaların ne tür kısıtlamak izin verir.