So, Projekt abgeschlossen.
Code: Alles auswählen
InitNetwork()
Enumeration
#String_FTP_Server
#String_FTP_User
#String_FTP_Password
#String_FTP_UploadFile
#Button_FTP_BrowseUploadFile
#String_FTP_PathOnServer
#Editor_Log
#Button_StartUpload
EndEnumeration
Global SIZE_OF_FTP_FILE.q
Global START_OF_UPLOAD.i
Procedure.s ByteRechner(dSize.d, Decimals.i = 2)
Protected Namen.s = "kMGTPEZY", *C.CHARACTER, Result.s = "0"
If dSize > 0.0
If dSize < 1024
Result = StrD(dSize, Decimals) + " " + "Byte"
Else
dSize / 1024
*C = @Namen
While dSize > 1024 And *C\c <> 0
dSize / 1024
*C + SizeOf(CHARACTER)
Wend
Result = StrD(dSize, Decimals) + " " + Chr(*C\c) + "Byte"
EndIf
EndIf
ProcedureReturn Result
EndProcedure
Procedure GadgetEvent_BrowseUploadFile()
Protected a$
a$ = OpenFileRequester("Select Upload File", "bla.rar", "All files (*.*)|*.*", 0)
If a$
SetGadgetText(#String_FTP_UploadFile, a$)
EndIf
EndProcedure
Procedure GadgetEvent_StartUpload()
Protected Path.s, i, Result
If GetGadgetText(#String_FTP_PathOnServer) And GetGadgetText(#String_FTP_Server) And GetGadgetText(#String_FTP_UploadFile)
If OpenFTP(0, GetGadgetText(#String_FTP_Server), GetGadgetText(#String_FTP_User), GetGadgetText(#String_FTP_Password)) = 0
AddGadgetItem(#Editor_Log, -1, "Unable to connect to Server!")
Else
Path = GetGadgetText(#String_FTP_PathOnServer)
Result = #True
If Left(Path, 1) <> "/"
Path = "/" + Path
EndIf
For i = 1 To CountString(Path, "/")
If SetFTPDirectory(0, StringField(Path, i + 1, "/")) = 0
AddGadgetItem(#Editor_Log, -1, "Error! Can't get into " + StringField(Path, i + 1, "/") + "!")
Break
Else
AddGadgetItem(#Editor_Log, -1, "Set Directory to " + StringField(Path, i + 1, "/"))
EndIf
Next i
SIZE_OF_FTP_FILE = FileSize(GetGadgetText(#String_FTP_UploadFile))
If SendFTPFile(0, GetGadgetText(#String_FTP_UploadFile), GetFilePart(GetGadgetText(#String_FTP_UploadFile)), #True) = 0
Result = #False
AddGadgetItem(#Editor_Log, -1, "Error! Can't upload file: " + GetGadgetText(#String_FTP_UploadFile) + "!")
EndIf
If Result = #False
CloseFTP(0)
SIZE_OF_FTP_FILE = #Null
Else
DisableGadget(#Button_StartUpload, 1)
StatusBarProgress(0, 0, 0)
START_OF_UPLOAD = ElapsedMilliseconds()
EndIf
EndIf
EndIf
EndProcedure
Procedure MyTimerEvent()
Protected q.q, speed.d, d.d
If IsFTP(0)
q = FTPProgress(0)
Select q
Case #PB_FTP_Started
;reset our time var
START_OF_UPLOAD = ElapsedMilliseconds()
Case #PB_FTP_Finished
;finished, close ftp and add speed info
speed = SIZE_OF_FTP_FILE / ((ElapsedMilliseconds() - START_OF_UPLOAD) / 1000)
AddGadgetItem(#Editor_Log, -1, "Speed: " + ByteRechner(Speed) + "/s")
StatusBarProgress(0, 0, 100)
CloseFTP(0)
DisableGadget(#Button_StartUpload, 0)
Case #PB_FTP_Error
AddGadgetItem(#Editor_Log, -1, "An error occured while uploading!")
StatusBarProgress(0, 0, 100)
CloseFTP(0)
DisableGadget(#Button_StartUpload, 0)
Default
d = 100 * (q / SIZE_OF_FTP_FILE)
StatusBarProgress(0, 0, d)
EndSelect
EndIf
EndProcedure
Procedure main()
OpenWindow(0, 0, 0, 330, 460, "FTP-Upload-Test", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
TextGadget(#PB_Any, 5, 5, 100, 20, "FTP-Server:")
StringGadget(#String_FTP_Server, 110, 5, 160, 22, "")
TextGadget(#PB_Any, 5, 30, 100, 20, "Username:")
StringGadget(#String_FTP_User, 110, 30, 160, 22, "")
TextGadget(#PB_Any, 5, 55, 100, 20, "Password:")
StringGadget(#String_FTP_Password, 110, 55, 160, 22, "")
TextGadget(#PB_Any, 5, 80, 100, 20, "Upload-File:")
StringGadget(#String_FTP_UploadFile, 110, 80, 160, 22, "")
ButtonGadget(#Button_FTP_BrowseUploadFile, 275, 80, 40, 22, "...")
TextGadget(#PB_Any, 5, 105, 100, 20, "Path on Server:")
StringGadget(#String_FTP_PathOnServer, 110, 105, 160, 22, "/public")
ButtonGadget(#Button_StartUpload, 110, 140, 80, 26, "Start Upload")
EditorGadget(#Editor_Log, 5, 180, 320, 250, #PB_Editor_ReadOnly)
CreateStatusBar(0, WindowID(0))
AddStatusBarField(#PB_Ignore)
AddWindowTimer(0, 0, 10)
BindGadgetEvent(#Button_FTP_BrowseUploadFile, @GadgetEvent_BrowseUploadFile())
BindGadgetEvent(#Button_StartUpload, @GadgetEvent_StartUpload())
BindEvent(#PB_Event_Timer, @MyTimerEvent())
While WaitWindowEvent() <> #PB_Event_CloseWindow : Wend
If IsFTP(0)
CloseFTP(0)
EndIf
EndProcedure
main()
funktioniert das Tool jetzt wie es soll.
Rechtsklick auf eine Grafikdatei oder was auch immer und Kontextmenü - senden an - FTP.
Habe weiterhin noch Drag n Drop auf das Stringgadget gelegt, sodass ich auch dateien reinziehen kann und danach upload.