par artkabis Mer 11 Fév - 13:03
Salut, moi perso j'utilise un script pour faire ce que tu veux, par contre il est en as2 et il utilise un fichier php:
Pour le fichier flash, il faut tout simplement déposer trois composants sur la scène,
• un bouton avec le nom d'occurrence "btnUpload"
• Un composant progressBar avec le nom d'ocurrence "current_upl"
•Un autre composant progressBar avec le nom d'occurence"total_upl"
Une fois ces trois compsants mis en place avec leurs noms d'occurrences, tu peux créer un nouveau calque "as" et taper ce code.
Il permet de télécharger plusieur fichier sur un serveur et il est aussi possible de choisir les types de fichiers autorisé, moi je l'utilise et c'est plutôt pas mal.
Voici le code as2:
- Code:
import flash.net.FileReferenceList;
import flash.net.FileReference;
import mx.controls.ProgressBar;
var allTypes:Array = new Array();
var imageTypes:Object = new Object();
imageTypes.description = "Images (*.JPG;*.JPEG;*.JPE;*.GIF;*.PNG;)";
imageTypes.extension = "*.jpg; *.jpeg; *.jpe; *.gif; *.png;";
allTypes.push(imageTypes);
var textTypes:Object = new Object();
textTypes.description = "Text Files (*.TXT;*.RTF;)";
textTypes.extension = "*.txt; *.rtf";
allTypes.push(textTypes);
var FLRef:FileReferenceList = new FileReferenceList();
// Adresse du script qui va gérer le fichier uploadé
var urlUpload = "http://localhost/upload.php";
var arListFiles:Array;
var compteurUpload = 0;
var total_upload = 0;
var total_current_upload = 0;
var upload = 0;
var current_upload = 0;
var nb_file_upload = 0;
// Listener pour gérer les événements
var listener:Object = new Object();
FLRef.addListener(listener);
// Event sur la selection du ou des fichiers
listener.onSelect = function (fileRL:FileReferenceList)
{
compteurUpload = 0;
arListFiles = fileRL.fileList;
// On récupére la taille totale des fichiers à uploader
for (var i:Number = 0; i < fileRL.fileList.length; i++)
total_upload += arListFiles[i].size;
// Maintenant on commence par uploader le premier fichier
if (arListFiles[compteurUpload] != null)
{
arListFiles[compteurUpload].addListener(this);
arListFiles[compteurUpload].upload(urlUpload);
}
}
listener.onComplete = function(file:FileReference):Void
{
total_current_upload += upload;
upload = 0;
if (compteurUpload + 1 < arListFiles.length)
{
compteurUpload++;
// Maintenant on upload le fichier suivant
if (arListFiles[compteurUpload] != null)
{
arListFiles[compteurUpload].addListener(this);
arListFiles[compteurUpload].upload(urlUpload);
}
}
}
// Event sur erreur HTTP
listener.onHTTPError = function(file:FileReference):Void {}
// Event sur l'annulation de l'upload
listener.onCancel = function(file:FileReference):Void {}
// Event sur l'ouverture du fichier
listener.onOpen = function(file:FileReference):Void {}
// Mise à jour des progresse bar
listener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void
{
//trace ("onProgress : " + file.name);
if (upload == 0) upload = bytesTotal;
// PB Current
current_upl.setProgress(bytesLoaded, upload);
// PB Total
total_upl.setProgress(total_current_upload + bytesLoaded, total_upload);
}
// Event d'erreur E/S
listener.onIOError = function(file:FileReference):Void {}
// Bouton pour l'upload
btnUpload.onPress = function()
{
FLRef.browse(allTypes);
}
Et celui du fichier "upload.php":
- Code:
<?php
//print_r($_FILES);
if (isset($_FILES["Filedata"]))
move_uploaded_file($_FILES["Filedata"]["tmp_name"], $_FILES["Filedata"]['name']);
else
echo "KO";
?>
Il te suffit enssuite de déposer ton fichier html de ton fla, le fichier swf et le fichier php. Voili voilou...