Volledige versie bekijken : FileReferenceList
Dikke_lu
%Europe/Berlin %897 %2006, 22:32
Ik ben een uploadscriptje aan het maken dat meerdere files kan selecteren. Tonen hoe groot deze files zijn en daarna (als men op de confirmBtn klikt) te uploaden.
Het browsen naar de files en uploaden ook maar ik wil dat dit pas gebeurt als ik op een knop klik. Ziet iemand wat ik allemaal fout doe??? :) (dit script komt vanaf de macromedia livedocs)
import flash.net.FileReferenceList;
import flash.net.FileReference;
// luistert naar de clicks
var listener:Object = new Object();
// doet browser venster open
uploadBtn.onPress = function(){
var fileRef:FileReferenceList = new FileReferenceList();
fileRef.addListener(listener);
fileRef.browse();
}
// selecteert de files
listener.onSelect = function(fileRefList:FileReferenceList) {
trace("onSelect");
var list:Array = fileRefList.fileList;
var item:FileReference;
for(var i:Number = 0; i < list.length; i++) {
item = list[i];
textArea.text += "\n name: " + item.name;
textArea.text += " (" + item.size + "Kb)";
trace("name: " + item.name);
trace(item.addListener(this));
stop();
//item.upload("http://www.yourdomain.com/");
}
}
// als de gebruiker op cancel drukt
listener.onCancel = function():Void {
trace("onCancel");
stop();
}
confirmBtn.onPress = function(){
trace("upload");
var list:Array = fileRefList.fileList;
var item:FileReference;
for(var i:Number = 0; i < list.length; i++) {
item = list[i];
textArea.text += "\n name: " + item.name;
textArea.text += " (" + item.size + "Kb)";
trace("name: " + item.name);
trace(item.addListener(this));
item.upload("http://www.yourdomain.com/");
}
listener.onOpen = function(file:FileReference):Void {
trace("onOpen: " + file.name);
}
listener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
trace("onProgress with bytesLoaded: " + bytesLoaded + " bytesTotal: " + bytesTotal);
textArea.text += bytesTotal + "Kb";
}
listener.onComplete = function(file:FileReference):Void {
trace("onComplete: " + file.name);
}
listener.onHTTPError = function(file:FileReference, httpError:Number):Void {
trace("onHTTPError: " + file.name + " httpError: " + httpError);
}
listener.onIOError = function(file:FileReference):Void {
trace("onIOError: " + file.name);
}
listener.onSecurityError = function(file:FileReference, errorString:String):Void {
trace("onSecurityError: " + file.name + " errorString: " + errorString);
}
stop();
}
Dauntless
%Europe/Berlin %902 %2006, 22:39
Je hebt de upload() regel weggecomment, dus het zou moeten werken zo. Je bent zeker dat de files vroegtijdig worden geupload?
Dikke_lu
%Europe/Berlin %739 %2006, 18:45
bij confirmBtn is die niet weg. Ik krijg mijn lijst van bestanden maar ik wil dat ze beginnen te uploaden als ik op de confirmBtn klik. Hoe doe ik dat dan?
Dauntless
%Europe/Berlin %744 %2006, 18:51
Ik begrijp je vraag wel, maar aangezien hij alleen maar bij confirmBtn staat zie ik echt niet waar hij hem zou kunnen uploaden...
Dikke_lu
%Europe/Berlin %749 %2006, 18:59
dat klopt. Maar toch doet hij het niet. Als ik een trace("dikke_lu"); plaats bij de confirmBtn dan print hij dat wel uit maar hij gaat niet verder met de upload. Daar zit het probleem.
Dauntless
%Europe/Berlin %752 %2006, 19:02
Wanneer je de list traced in je onPress, krijg je dan het juiste resultaat?
Dikke_lu
%Europe/Berlin %753 %2006, 19:05
dan krijg ik undefined.
Hoe kan ik maken dat die die list daar nog altijd kent?
Dauntless
%Europe/Berlin %764 %2006, 19:21
// doet browser venster open
uploadBtn.onPress = function(){
var fileRef:FileReferenceList = new FileReferenceList();
fileRef.addListener(listener);
fileRef.browse();
}
Hier maak je de var 'fileRef' lokaal aan.
Probeer dit eens:
var fileRef:FileReferenceList;
// doet browser venster open
uploadBtn.onPress = function(){
fileRef = new FileReferenceList();
fileRef.addListener(listener);
fileRef.browse();
}
Dikke_lu
%Europe/Berlin %786 %2006, 19:52
Ok kheb ff doorgewerkt aan een nieuwe versie van mijn uploadscript en nu zit ik met het volgende probleem.
Ik denk dat het flash gedeelte wel werkt maar als ik dit met php wil verwerken moet ik dit gebruiken.
<?php
//create the directory if doesn't exists (should have write permissons)
if(!is_dir("./test")) mkdir("./test", 0755);
//move the uploaded file
var_dump($_FILES);
move_uploaded_file($_FILES['Filedata']['tmp_name'], "./test/".$_FILES['Filedata']['name']);
chmod("./test/".$_FILES['Filedata']['name'], 0777);
?>
Nu bij de variabele $_FILES['filedate']['name'] => die filedata dat is de naam van het uploadveld eigenlijk?
Wat gaat die naam zijn als ik upload vanuit flash? Kan ik die ergens instellen?
Hier is mijn uploadscript nog eens want het kan zijn dat hier ook nog foutjes inzitten.
MVG
Dikke_lu
(Vol goede moed dat het hem ooit gaat lukken ;) )
/* EDIT */
Sorry dauntless ik had je post te laat gezien. Ik denk dat het zo werkt het flash gedeelte. Want als ik nu mijn list trace dan krijg ik object object terug.
/* EDIT */
import flash.net.FileReferenceList;
import flash.net.FileReference;
// luistert naar de clicks
var listener:Object = new Object();
// doet browser venster open
uploadBtn.onPress = function() {
var fileRef:FileReferenceList = new FileReferenceList();
fileRef.addListener(listener);
fileRef.browse();
}
// selecteert de files
listener.onSelect = function(fileRefList:FileReferenceList) {
trace("onSelect");
var list:Array = fileRefList.fileList;
var item:FileReference;
for(var i:Number = 0; i < list.length; i++) {
item = list[i];
textArea.text += "\n name: " + item.name;
textArea.text += " (" + item.size + "Kb)";
trace("name: " + item.name);
trace(item.addListener(this));
}
confirmBtn.onPress = function(){
var itemUp:FileReference;
for(var i:Number = 0; i < list.length; i++) {
itemUp = list[i];
textArea.text = "\n Uploading: " + itemUp.name;
trace("" + itemUp.name);
//textArea.text += " (" + itemUp.size + "Kb)";
itemUp.upload("upload.php");
}
}
}
// als de gebruiker op cancel drukt
listener.onCancel = function():Void {
trace("onCancel");
stop();
}
listener.onOpen = function(file:FileReference):Void {
trace("onOpen: " + file.name);
textArea.text= "\n onOpen: " + file.name;
}
listener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
trace("onProgress with bytesLoaded: " + bytesLoaded + " bytesTotal: " + bytesTotal);
textArea.text += "\n " + bytesTotal + "Kb";
}
listener.onComplete = function(file:FileReference):Void {
trace("onComplete: " + file.name);
textArea.text += "\n " + file.name + "Kb";
}
listener.onHTTPError = function(file:FileReference, httpError:Number):Void {
trace("onHTTPError: " + file.name + " httpError: " + httpError);
textarea.text += "\n \n \n onHTTPError: " + file.name + " httpError: " + httpError;
}
listener.onIOError = function(file:FileReference):Void {
trace("onIOError: " + file.name);
textArea.text += " \n \n \n onIOError: " + file.name;
}
listener.onSecurityError = function(file:FileReference, errorString:String):Void {
trace("onSecurityError: " + file.name + " errorString: " + errorString);
textArea.text += "onSecurityError: " + file.name + " errorString: " + errorString;
}
Dauntless
%Europe/Berlin %825 %2006, 20:49
Die 'name' is de bestandsnaam.
Persoonlijk gebruik ik dit upload script:
<?php
//path to storage
$storage = 'userUploads';
//path name of file for storage
$uploadfile = "$storage/" . basename( $_FILES['Filedata']['name'] );
//if the file is moved successfully
if ( move_uploaded_file( $_FILES['Filedata']['tmp_name'] , $uploadfile ) ) {
echo( '1 ' . $_FILES['Filedata']['name']);
//file failed to move
}else{
echo( '0');
}
?>
Dikke_lu
%Europe/Berlin %835 %2006, 21:03
ik heb het geprobeerd met Filedata te vervangen door testfinal (swf heet testfinal.swf) en ik krijg nog niets geupload.
Dus het flashscript werkt niet.
Ziet iemand (vooral dauntless :) ) wat daar fout gaat want ik vind het niet meer.
Ik krijg als ik local test (zonder php) een IOError (dat zal waarschijnlijk zijn omdat er geen php kan geparsed worden). Als ik online probeer krijg ik geen enkele fout te zien.
Dauntless
%Europe/Berlin %844 %2006, 21:16
'FileData' moet blijven hoor. Dat is standaard geloof ik.
Maar heb je mijn versie eens getest? (Gewoon om te kijken of het zo wel werkt).
Dikke_lu
%Europe/Berlin %845 %2006, 21:17
Weer een aanpassing aan mijn script.
=== testfinal.swf ===
import flash.net.FileReferenceList;
import flash.net.FileReference;
// luistert naar de clicks
var listener:Object = new Object();
var fileRef:FileReferenceList;
// doet browser venster open
uploadBtn.onPress = function() {
var fileRef:FileReferenceList = new FileReferenceList();
fileRef.addListener(listener);
fileRef.browse();
}
// selecteert de files
listener.onSelect = function(fileRefList:FileReferenceList) {
trace("onSelect");
var list:Array = fileRefList.fileList;
var item:FileReference;
for(var i:Number = 0; i < list.length; i++) {
item = list[i];
textArea.text += "\n name: " + item.name +" (" + item.size + "Kb)";
trace("name: " + item.name);
trace(item.addListener(this));
}
confirmBtn.onPress = function(){
var itemUp:FileReference;
for(var i:Number = 0; i < list.length; i++) {
itemUp = list[i];
textArea.text += "\n Uploading: " + itemUp.name;
trace("" + itemUp.name);
//textArea.text += " (" + itemUp.size + "Kb)";
itemUp.upload("upload.php");
}
}
}
// als de gebruiker op cancel drukt
listener.onCancel = function():Void {
trace("onCancel");
stop();
}
listener.onOpen = function(file:FileReference):Void {
trace("onOpen: " + file.name);
textArea.text += "\n onOpen: " + file.name;
}
listener.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
trace("onProgress with bytesLoaded: " + bytesLoaded + " bytesTotal: " + bytesTotal);
textArea.text += "\n onProgress" + bytesTotal + "Kb";
}
listener.onComplete = function(file:FileReference):Void {
trace("onComplete: " + file.name);
textArea.text += "\n onComplete" + file.name + "Kb";
}
listener.onHTTPError = function(file:FileReference, httpError:Number):Void {
trace("onHTTPError: " + file.name + " httpError: " + httpError);
textarea.text += "\n \n \n onHTTPError: " + file.name + " httpError: " + httpError;
}
listener.onIOError = function(file:FileReference):Void {
trace("onIOError: " + file.name);
textArea.text += " \n \n \n onIOError: " + file.name;
}
listener.onSecurityError = function(file:FileReference, errorString:String):Void {
trace("onSecurityError: " + file.name + " errorString: " + errorString);
textArea.text += "onSecurityError: " + file.name + " errorString: " + errorString;
}
De output
name: phpinfo.php (21Kb)
name: README.txt (530Kb)
Uploading: phpinfo.php
Uploading: README.txt
onOpen: README.txt
onOpen: phpinfo.php
onProgress530Kb
onProgress21Kb
onCompleteREADME.txtKb
onCompletephpinfo.phpKb
uploadscript
<?php
//path to storage
$storage = 'test'; // dit is een map op hetzelfde niveau als waar de swf staat.
//path name of file for storage
$uploadfile = "$storage/" . basename( $_FILES['FileData']['name'] );
//finaltest(naam bestand)
//if the file is moved successfully
if ( move_uploaded_file( $_FILES['FileData']['tmp_name'] , $uploadfile ) ) {
echo( '1 ' . $_FILES['FileData']['name']);
//file failed to move
}else{
echo( '0');
}
?>
/* edit */
met uw script dauntless wordt ook niets geupload naar de map test. :(
/* edit */
Dit is alles wat ik heb maar nog altijd geen bestanden in de test map.
Met deze regel
itemUp.upload("upload.php");
roep ik toch mijn phpscript aan (staat ook op het zelfde niveau van de swf)
Dauntless
%Europe/Berlin %875 %2006, 22:01
Dat zou inderdaad moeten werken ja.
Check je met een FTP prog of de files geupload zijn? Want ik had een paar dagen geleden het probleem dat ik dacht dat niets geupload werd, maar dag lag aan mijn FTP prog.... (die liet de files niet zien, ondanks dat ik zelfs heel het prog afsloot!)
Dikke_lu
%Europe/Berlin %880 %2006, 22:07
nope zit echt niets op. Ik ben zelfs op de server met putty gaan kijken.
Morgen ga ik eens wat var_dumps naar een fileke schrijven dan kan ik zien of er iets met php gebeurt.
Ik zal verder laten weten hoe het afloopt (ge zult dus nog van mij horen :) )
/*edit */
ik denk dat de klok op de server van dit forum fout staat.
dit bericht is om 22.07 geplaatst zie links boven
Dauntless
%Europe/Berlin %896 %2006, 22:30
De klok staat denk ik juist hoor... Mijn computer klok is nu 22:29
Dikke_lu
%Europe/Berlin %897 %2006, 22:32
ja maar hier staat links boven uwe avatar en naam vandaag, 21,30
Dauntless
%Europe/Berlin %902 %2006, 22:39
Dat moet je hier dan even aanpassen:
http://flashfocus.nl/forum/profile.php?do=editoptions
(Datum & tijd onderdeel).
En nu terug on topic ;).
Dikke_lu
%Europe/Berlin %649 %2006, 16:35
@OT
Ik heb het opgelost mijn probleem. Ik ga proberen dit weekend een fatsoenlijk layout te maken voor mijn uploadscript samen met een fatsoenlijk php script. Hierna zal ik alles uploaden.
Mocht ik nog problemen hebben (wat toch gaat zijn) zult ge mij hier wel horen.
latino
%Europe/Berlin %410 %2006, 10:51
misschien leuk als je het resultaat post, dan hebben de andere er ook wat aan
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.