| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| habs vergessen 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;
} ![]() pwd |
| | |
| | #3 (permalink) | |
| habs vergessen Registriert seit: Feb 2006
Beiträge: 990
| Zitat:
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 | |
| | |
| | #4 (permalink) |
| 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. |
|
| | #5 (permalink) |
| habs vergessen 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(); |
| | |
| | #10 (permalink) |
| habs vergessen 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 |
| | |
| | #11 (permalink) |
| habs vergessen 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 |
| | |
| | #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! |
| | |
| | #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. |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |