Zurück   Flashforum > Flash > Stuff

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-11-2006, 12:37   #1 (permalink)
habs vergessen
 
Benutzerbild von pwdVergesser
 
Registriert seit: Feb 2006
Beiträge: 990
[stuff] flash ftp- & database client

hallo zusammen,

daran habe ich jetzt länger gearbeitet, und will euch das ganze
natürlich nicht vorenthalten. das ganze ist eine ftp client und
ein kleines datenbank-verwaltungstool in einem - denn diese beiden
funktionalitäten hatte ich mir immer als 1 programm gewünscht...

Hier und da gibt es sicherlich noch Bugs, oder Features die fehlen,
aber für Feedback und Anregungen bin ich ja immer zu haben.

Featurelists:

FTP-Features:
- FTP Up- und downloads
- Remember Domain Shortcuts
- Rename, delete & move Dateien + neue Ordner anlegen
- Rechte für Dateien online setzen (chmod)
- Command Line Eingabe

Database-Features (SQL & Access supported):
- Datenbank Übersicht
- Neue Tabellen anlegen
- Tabellen umbenennen, Tabellen löschen
- Spalten editieren, löschen
- CVS export

...u.v.m



saugen und testen


und hier ein wenig script zum stöbern (zinc benötigt):

Code:
function ftpEventHandler(event:Object) {
	
	var eventType:String = String(event.type).toUpperCase();
	
	if (eventType == "FILERECEIVED") {
		_root.fileReceived = true;
		_root.myFTP.chDir("");
		updateStatus("download complete.");
	}
	
	if (eventType == "FILESENT") {
		
		_root.uploadRunning = false;


		if (!_root.uploadRunning) {
			_level0.progressBarDoub._alpha = 0;
			_level0.progressBar.label = "upload complete.";			
			clearInterval(_root.checkProgressInterval);			
			_root.myFTP.chDir("");
			updateStatus("upload complete.");
			delete _root.uploadRunning;
		}
	}	
	
	if (eventType == "DIRCHANGED" || eventType == "LISTINGDONE" || eventType == "FILERENAMED" || eventType == "DIRCREATED" || eventType == "FILEDELETED") {
		
		delete _root.myFTP.onListingDone;
		
		_root.currDir = String(_root.myFTP.currentDir);
		

		/// get folder list:    
		if (myFTP != null) {
 			var foldersData:Array = myFTP.getFolderList();
			
			var lookForParent = "";
			
			if (_root.currDir != undefined) {
				if (_root.currDir != "") {
					if (_root.currDir != "/") {
						if (_root.currDir != "../") {
							for (var j=0; j<foldersData.length; j++) {
								if (foldersData[j][0] == ".") {
									lookForParent = "yes";
									break;
								} else {
									lookForParent = "no";
								}
							}
						}
					}
				}
			}
			
			if (lookForParent == "no") {
				foldersData.unshift(["../","",""]);
			}
			
 			var folders:Array = new Array(foldersData.length);
 			var i:Number = 0;
			
 			while (i<foldersData.length) {
  				folders[i] = foldersData[i][0] + "," + foldersData[i][1] + "," + foldersData[i][2];
  				i++;
 			}
 			// release memory
 			foldersData = [];
 			if (folders.length>0) {
  				//updateStatus("folders listing for current dir: "+currDir);
				folders.sort();
				for (var i=0; i<folders.length;i++) {
					
					var getDescript = folders[i].split(",");

					var getDaytime = getDescript[1].indexOf("AM");
					if (getDaytime != -1) {
						var cutDay = getDescript[1].split("AM");
					}
					var getDaytime = getDescript[1].indexOf("PM");
					if (getDaytime != -1) {
						var cutDay = getDescript[1].split("PM");
					}
					
					if (getDescript[0] == ".") {
						getDescript[0] = "../";
					}
					
					if (i == 0) {
						_root.listClip["listDisplay"].attachMovie("folder","folder"+i,_root.depth,{_x:0,_y:0});
						_root.listClip["listDisplay"]["folder" + i]["fName"].text = getDescript[0];
						if (getDescript[0] != "../") {
							_root.listClip["listDisplay"]["folder" + i]["fDate"].text = cutDay[0];
							_root.listClip["listDisplay"]["folder" + i]["fSize"].text = getDescript[2] + " Byte";
						}
						_root.listClip["listDisplay"]["folder" + i]["selectBtn"].folder = getDescript[0];
						_root.getLastPos = _root.listClip["listDisplay"]["folder" + i]._y + _root.listClip["listDisplay"]["folder" + i]._height + int(2);						
						_root.depth++;
					} else {
						_root.listClip["listDisplay"].attachMovie("folder","folder"+i,_root.depth,{_x:0,_y:_root.listClip["listDisplay"]["folder" + (i-1)]._y + _root.listClip["listDisplay"]["folder" + (i-1)]._height + int(2)});
						_root.listClip["listDisplay"]["folder" + i]["fName"].text = getDescript[0];
						if (getDescript[0] != "../") {
							_root.listClip["listDisplay"]["folder" + i]["fDate"].text = cutDay[0];
							_root.listClip["listDisplay"]["folder" + i]["fSize"].text = getDescript[2] + " Byte";
						}
						_root.listClip["listDisplay"]["folder" + i]["selectBtn"].folder = getDescript[0];					
						_root.getLastPos = _root.listClip["listDisplay"]["folder" + i]._y + _root.listClip["listDisplay"]["folder" + (i-1)]._height + int(2);
						_root.depth++;
					}
				}
 			} else {
  				updateStatus("no folders in current dir: "+currDir);
 			}
 			// release memory
 			folders = [];
			
			
 			var filesData:Array = myFTP.getFileList();
 			var files:Array = new Array(filesData.length);
 			var i:Number = 0;
 			while (i<filesData.length) {
  				files[i] = filesData[i][0] + "," + filesData[i][1] + "," + filesData[i][2];
  				i++;
 			}
 			// release memory
 			filesData = [];
 			if (files.length>0) {
  				//updateStatus("file listing for current dir: "+currDir);
  				files.join("\n")
				files.sort();
				for (var i=0; i<files.length;i++) {
					
					var getDescript = files[i].split(",");

					var getDaytime = getDescript[1].indexOf("AM");
					if (getDaytime != -1) {
						var cutDay = getDescript[1].split("AM");
					}
					var getDaytime = getDescript[1].indexOf("PM");
					if (getDaytime != -1) {
						var cutDay = getDescript[1].split("PM");
					}					
					
					if (String(getDescript[0]) != ".") {
						if (i == 0) {
							_root.listClip["listDisplay"].attachMovie("file","file"+i,_root.depth,{_x:0,_y:int(_root.getLastPos) + int(2)});
							_root.listClip["listDisplay"]["file" + i]["fName"].autoSize = "left";
							_root.listClip["listDisplay"]["file" + i]["fName"].text = getDescript[0];
							_root.listClip["listDisplay"]["file" + i]["fNameBackup"] = getDescript[0];
							_root.listClip["listDisplay"]["file" + i]["fDate"].text = cutDay[0];
							_root.listClip["listDisplay"]["file" + i]["fSize"].text = getDescript[2] + " Byte";							
							_root.listClip["listDisplay"]["file" + i]["selectBtn"].file = getDescript[0];
							_root.listClip["listDisplay"]["file" + i]["selectBtn"].kb = getDescript[2];
							_root.depth++;
						} else {
							_root.listClip["listDisplay"].attachMovie("file","file"+i,_root.depth,{_x:0,_y:_root.listClip["listDisplay"]["file" + (i-1)]._y + _root.listClip["listDisplay"]["file" + (i-1)]._height + int(2)});
							_root.listClip["listDisplay"]["file" + i]["fName"].autoSize = "left";
							_root.listClip["listDisplay"]["file" + i]["fName"].text = getDescript[0];
							_root.listClip["listDisplay"]["file" + i]["fNameBackup"] = getDescript[0];
							_root.listClip["listDisplay"]["file" + i]["fDate"].text = cutDay[0];
							_root.listClip["listDisplay"]["file" + i]["fSize"].text = getDescript[2] + " Byte";
							_root.listClip["listDisplay"]["file" + i]["selectBtn"].file = getDescript[0];
							_root.listClip["listDisplay"]["file" + i]["selectBtn"].kb = getDescript[2];
							_root.depth++;
						}
					}
				}
 			} else {
  				updateStatus("no files in current dir: "+currDir);
 			}
 			// release memory
 			files = [];
		}
	}
	
	
	_root.pane._visible = true;
	if (_root.pane._height > 231) {
		_root.scrollShadow._visible = true;
	} else {
		_root.scrollShadow._visible = false;
	}
	_root.scrollGlow._visible = true;
	
	_root.pane.invalidate();
	
	return;
	
}

function updateStatus(msg:String):Void {
	
	if (_root.ftpConvCache != msg) {
		ftpConvTxt.text += msg + "\n";
		ftpConvTxt.selectable = true;
		ftpConvTxt.scroll = ftpConvTxt.maxscroll;
	}
	
	_root.ftpConvCache = msg;

}

// FTP READY EVENT //
function onFTPReady(id) {
	updateStatus("FTP Server ready.");
}


// FTP LOGGED EVENT //
function onFTPLoggedIn(id) {
	if (_root.connected == false) {
		_root.connected = true;
		//mdm.enableexithandler();
		_root.myFTP.chDir(_root.FTP_FOLDER);
	}
}

function connectToFtp(server:String,user:String,pass:String) {
	
	_root.FTP_SERVER = server;
	_root.FTP_USERNAME = user;
	_root.FTP_PASSWORD = pass;
	
	_root.FTP_ID = "0";
	_root.FTP_PORT = "21";
	_root.FTP_FOLDER = "";

	_root.connected = false;
	
	_root.myFTP = new mdm.FTP(_root.FTP_SERVER, _root.FTP_PORT);
	_root.myFTP.login(_root.FTP_USERNAME, _root.FTP_PASSWORD);
	
	_root.myFTP.NOOP = true;
	
	updateStatus("Connecting to server...");
	_root.myFTP.onDirChanged = _root.myFTP.onFileReceived = _root.myFTP.onFileSent = _root.myFTP.onFileRenamed = _root.myFTP.onFileDeleted = _root.myFTP.onDirDeleted = _root.myFTP.onDirCreated = ftpEventHandler;

}
für mehr infos - gerne anfragen...


pwd
__________________
Blog/Lab Xing
pwdVergesser ist offline   Mit Zitat antworten
Alt 16-11-2006, 07:45   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Das wichtigste hast du vergessen, nämlich das Script auszukommentieren. Wird leider meist vernachlässigt... Ohne Erklärungen ist das IMHO eben kein Stuff, sondern "nur" ein Script (ohne deine Leistung jetzt schmälern zu wollen).
  Mit Zitat antworten
Alt 16-11-2006, 08:00   #3 (permalink)
habs vergessen
 
Benutzerbild von pwdVergesser
 
Registriert seit: Feb 2006
Beiträge: 990
Zitat:
agedoubleju

kein Stuff, sondern "nur" ein Script
naja -

so kurz vor der fc06 will ich mich jetzt nicht mit dir streiten,
aber...

ich denke ein kompletter ftp client, den man sich downloaden,
installieren und benutzen kann ist mehr als guter [stuff].

des weiteren werde ich heute weitere passagen der kernscripte
dazu veröffentlichen, sozusagen auf vielfache mailanfrage hin,
und ja - ich werde dann da wohl auch ein wenig mehr auskommentieren...

pwd
__________________
Blog/Lab Xing
pwdVergesser ist offline   Mit Zitat antworten
Alt 16-11-2006, 08:08   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Fühl dich bitte nicht kritisiert, sondern sieh das nur als Ergänzung.

Im Studium wurden bei mir bspw. bei Programmieraufgaben die Auskommentierung mit 30 % der Gesamtleistung bewertet. Hat sich dann auch später im Job als dringend notwendig erwiesen, denn stell dir vor, mit deinem Script arbeiten zig Leute. Was da dann an Zeit "verbrannt" wird, um sich durch die Code-Wüste durchzuarbeiten und die Funktionen effektiv zu nutzen...

Außerdem wollen wir uns ja alle auch weiterbilden und nicht nur vorgefertigte Applikationen anwenden. Das ist oft aber nur möglich, wenn wir uns in den Code auch schnell einlesen können.
  Mit Zitat antworten
Alt 17-11-2006, 14:54   #5 (permalink)
habs vergessen
 
Benutzerbild von pwdVergesser
 
Registriert seit: Feb 2006
Beiträge: 990
so...

auf vielfachen E-mailwunsch hier nun das Firesnippet aus meinem
FTP- & Database Client.

Ich habe hier im Forum schon viele Ansätze gepostet "Feuer" in Flash8 über
die zur Verfügung stehenden Bitmap-Klassen und Filter zu erzeugen...
hier ein weiterer...

ansehen

saugen

Und hier zum stöbern:

Code:


/////////////////////////////////////////////////////
//  text fire
//	author : frank reitberger
//	site : http://www.dasprinzip.com
//  copyright 2006
/////////////////////////////////////////////////////


// --------------------------------------------------------------------------------------------------


stop();


// --------------------------------------------------------------------------------------------------

///////////////////////////////////
// import flash filter classes
///////////////////////////////////


import flash.display.BitmapData;
import flash.filters.*;
import flash.geom.*;



// --------------------------------------------------------------------------------------------------

///////////////////////////////////
// configure canvas
///////////////////////////////////


function initStage() {
	
	
	/////////////////////
	// setup efx stage
	
	_root.efxStage = new BitmapData(Stage.width, Stage.height, false, 13421772);	

	
	this["fireWall"].offsets = [];
    this["fireWall"].offsetsD = [];
	
    var pt:Number = 0;
    
	while (pt < 3) {
        this["fireWall"].offsetsD[pt] = {x: Math.random() * 2 - 1, y: Math.random() * 6 + 2};
        this["fireWall"].offsets[pt] = {x: 0, y: 0};
        pt++;
    }
	
    this["fireWall"].offsetsD[0].x = this["fireWall"].offsetsD[0].x / 3;
    this["fireWall"].offsetsD[0].y = Math.random() * 3 + 2;
    this["fireWall"].rn = Math.floor(Math.random() * 10);	

	
	/////////////////////
	// paint efx	
	
	paint();
}



// --------------------------------------------------------------------------------------------------

///////////////////////////////////
// paint fire
///////////////////////////////////


function paint() {
	
    _root["fireWall"].onEnterFrame = function () {
        var pt:Number = 0;
        while (pt < 3) {
            this.offsets[pt].x = this.offsets[pt].x + this.offsetsD[pt].x;
            this.offsets[pt].y = this.offsets[pt].y + this.offsetsD[pt].y;
            pt++;
        }
        
		_root.efxStage.perlinNoise(30, 50, 3, rn, false, false, 1, true, this.offsets);
        
		var filter = new DisplacementMapFilter(_root.efxStage, new Point(0, 0), 1, 1, 10, 100, "clamp");
        this.filters = [filter];
    }

}


// --------------------------------------------------------------------------------------------------

///////////////////////////////////
// init
///////////////////////////////////

initStage();
pwd
__________________
Blog/Lab Xing
pwdVergesser ist offline   Mit Zitat antworten
Alt 17-11-2006, 15:17   #6 (permalink)
class public{}
 
Benutzerbild von public
 
Registriert seit: Feb 2004
Ort: dessau
Beiträge: 1.406
super teil...............
public ist offline   Mit Zitat antworten
Alt 17-11-2006, 15:45   #7 (permalink)
Banned
 
Benutzerbild von ballaballa
 
Registriert seit: Sep 2006
Beiträge: 793
noch nicht getestet aber klingt super ....

darf ich dich OT was fragen?

bist du freelancer?... oder arbeitest du in einer agentur?...
ballaballa ist offline   Mit Zitat antworten
Alt 17-11-2006, 15:55   #8 (permalink)
habs vergessen
 
Benutzerbild von pwdVergesser
 
Registriert seit: Feb 2006
Beiträge: 990
ich arbeite fest in einer agentur...
aber frag´ mal =)

pwd
__________________
Blog/Lab Xing
pwdVergesser ist offline   Mit Zitat antworten
Alt 17-11-2006, 18:49   #9 (permalink)
Banned
 
Benutzerbild von ballaballa
 
Registriert seit: Sep 2006
Beiträge: 793
Zitat:
Zitat von pwdVergesser Beitrag anzeigen
ich arbeite fest in einer agentur...
aber frag´ mal =)

pwd
hab dir ne pm geschrieben
ballaballa ist offline   Mit Zitat antworten
Alt 21-11-2006, 11:45   #10 (permalink)
habs vergessen
 
Benutzerbild von pwdVergesser
 
Registriert seit: Feb 2006
Beiträge: 990
ein paar von euch wollten hatten mich angemailt um zu wissen,
wie der "namensupdate" der dateinamen im filesystem-view des
ftp-clients funzt - das ist eher einfach - s. codesnippet anbei:

Code:

var listenToName:Object = new Object();



listenToName.onChanged = function(textfield_txt:TextField) {
	
        if (fNameBackup != textfield_txt.text) {
		
		delete selectBtn["onEnterFrame"];
		selectBtn.timeCount = int(0);
		
		selectBtn.onEnterFrame = function() {
			
			updateTime = new Date();
			newSec = updateTime.getSeconds();
		
			if (oldSec != newSec) {
				
				this.timeCount++;
			
				if (int(this.timeCount) > int(1)) {
					
                                        /////////////////////////////////////////////
                                        //
                                        // renameFile == zinc specific func
                                        //
                                        /////////////////////////////////////////////

					_root.myFTP.renameFile(fNameBackup, textfield_txt.text);
					
					delete selectBtn["onEnterFrame"];
				
				}
			}
		
			oldSec = newSec;
		}
		
	}
}

///////////////////////////////////////////
//
// fName == name des textfields auf
// dem der listener angewandt wird
//
///////////////////////////////////////////

fNameBackup = this.fName.text;

this.fName.addListener(listenToName);

pwd
__________________
Blog/Lab Xing
pwdVergesser ist offline   Mit Zitat antworten
Alt 06-12-2006, 13:35   #11 (permalink)
habs vergessen
 
Benutzerbild von pwdVergesser
 
Registriert seit: Feb 2006
Beiträge: 990
und heute (06.12) gibt es auch dank eurer zahlreichen mails
mit bugreports ein erstes update des ftp-clients.

gefixt sind:

- Shortcuts-Einträge der FTP-Liste werden nicht mehr gedoppelt
- Drag´n´Drop und Dateiupload funzt wieder nach mdmScript Versionbug
- Es gibt auf Wunsch im FTP Menü auch einen "Refresh-Button"

Danke nochmal für die ganzen Mails. Wie gesagt - bekomme immer gerne
Feedback und Reports...

Hier die neue Version:
saugen und testen


pwd
__________________
Blog/Lab Xing
pwdVergesser ist offline   Mit Zitat antworten
Alt 02-11-2008, 18:51   #12 (permalink)
Style Freak
 
Registriert seit: Nov 2004
Ort: Radolfzell
Beiträge: 615
das tool ist echt genial nur leider gibt es ein problem, es kommt beim upload eine fehlermeldung das eine MSVCR80.dll nicht gefunden werden kann. was soll ich da machen?
__________________
Mit dieser Signatur hast du eben mal so unnötige 4Kb herrunter geladen!
ciberjoerg ist offline   Mit Zitat antworten
Alt 29-09-2010, 09:38   #13 (permalink)
Neuer User
 
Registriert seit: Aug 2006
Beiträge: 4
Benötige Hilfe beim Erstellen eines FTP Client in Flash

Hallo!
seit Monaten beschäftige ich mich mit der Umstellung meiner Flash 8-Webseite auf Flash mit AS3. Ich gehöre zum älteren Jahrgang (jenseits der 50) und tue mich sehr schwer mit der neuen Script-Technik. Außerdem bin ich beruflich ziemlich ausgelastet und meine Frau beschimpft mich bereits, wenn ich die wenige Freizeit nur noch vor´m Rechner sitze. Ich fürchte, es wird nicht mehr lange dauern, und sie schlägt mich auch erstmals. Meine AS3 Seite ist aber nun fast fertig, jedoch möchte ich gerne einen FTP-Client integrieren, von dem sich Geschäftsfreunde die verschiedensten Dateien runterladen können (schön wäre auch eine optionale Upload-Möglichket). Der Client soll aber nicht in einem separaten Fenster öffnen, sondern auf der Flash-Seite selbst stattfinden. Habe bereits stundenlang gegoogelt, habe Zinc 3.0 gekauft, habe die verschiedensten Tools gekauft und gesaugt, Scriptfragmente aus diesem Forum ausprobiert. Es gelingt mir einfach nicht! Wer kann mir - selbstverständlich gegen Bezahlung - helfen, damit ich meine ansonsten schon gut gelungene Webseite endlich online stellen kann. Auch wäre ich bereit, einen kleinen Autoren-Link unter den FTP-Client zu legen (z.B.: bei der Entwicklung dieses Web-FTP-Client wurden wir unterstützt von ..link")
Mein Equipment: Flash CS4 und CS5, Zinc 3.0, QNap-Server TS109 Pro, Webspace mit MySQL und PHP.
Ich freue mich über jeden hilfreichen Kontakt! Mein Wohnort: Nähe Dortmund.
Siebert ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:28 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele