Hi Leute...
Ich habe ein Problem mit _FTP_FilePut.
Wenn ich eine Datei hochlade, dessen Name Leerzeichen enthält, geht es nicht, er zeigt sofort an, dass es fertig ist, und auf dem Server ist auch nichts...
Kann mir da jemand helfen?
_FTP_FilePut und Leerzeichen
-
- [ offen ]
-
Hugbert -
15. August 2011 um 17:31 -
Geschlossen -
Erledigt
-
-
Hi Leute...
Ich habe ein Problem mit _FTP_FilePut.
Wenn ich eine Datei hochlade, dessen Name Leerzeichen enthält, geht es nicht, er zeigt sofort an, dass es fertig ist, und auf dem Server ist auch nichts...
Kann mir da jemand helfen?Hmm seh ich das richtig, du hast einen Websever und da willst du daten raufpacken, die um sozusagen eienn Patcher zu haben oder wie?
-
Eigener Patcher? Oo
Ich möchte einfach Dateien auf meinen FTP Server machen, nur wenn im Namen dieser Datei Leerzeichen vorkommen, geht es nicht. xD -
Wo liegt da der Sinn?
-
Das tut doch nichts zur Sache, ich möchte nur wissen, wie ich dieses Problem lösen kann!
Hier mal der komplette Code, ab und zu zeigt er an, dass diese Datei nicht existiert, doch dann geht es wieder <-- noch ein Problem
Spoiler anzeigen
[autoit]#RequireAdmin
[/autoit] [autoit][/autoit] [autoit]
#include <FTPEx.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region Gui
$Form1 = GUICreate("Fil0ad", 346, 140, 192, 124)
$Group1 = GUICtrlCreateGroup("Datei Upload", 8, 8, 329, 49)
$Label1 = GUICtrlCreateLabel("Pfad:", 16, 24, 29, 17)
$Input1 = GUICtrlCreateInput("", 48, 24, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
$Button1 = GUICtrlCreateButton("Suchen", 176, 24, 75, 25)
$Button2 = GUICtrlCreateButton("Hochladen", 256, 24, 75, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Datei Download", 8, 64, 329, 49)
$Label2 = GUICtrlCreateLabel("Dateiname:", 16, 80, 58, 17)
$Input2 = GUICtrlCreateInput("", 80, 80, 121, 21)
$Button3 = GUICtrlCreateButton("Herunterladen", 208, 80, 123, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label3 = GUICtrlCreateLabel("Status: Inaktiv", 8, 120, 256, 17)
$Label4 = GUICtrlCreateLabel("Slots:", 272, 120, 30, 17)
$slots = GUICtrlCreateLabel("X", 304, 120, 10, 17)
GUICtrlCreateLabel("", 128, 120, 4, 4)
$Label5 = GUICtrlCreateLabel(" / 8", 312, 120, 21, 17)
GUISetState(@SW_SHOW)
#EndRegion Guiguictrlsetdata($Label3,"Status: Verbinden...")
[/autoit] [autoit][/autoit] [autoit]
$ftpopen = _FTP_Open("FTP1")
$ftpconnect = _FTP_Connect($ftpopen,"Sag ich dir nicht","Das auch nicht","und das auch nicht")
guictrlsetdata($Label3,"Status: Verbunden!")While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
_deconnector()
Case $Button1
$fileopendialog1 = fileopendialog("Datei Hochladen",@scriptdir,"Alles (*.*)")
if not $fileopendialog1 = "" Then
guictrlsetdata($Input1,$fileopendialog1)
EndIf
Case $Button2
$filetoupload = guictrlread($Input1)
if not $filetoupload = "" Then
guictrlsetdata($Label3,"Status: Hochladen...")
$filetouploadnameonserver = StringRegExpReplace($filetoupload, '.+\\(.+)', '$1')
_FTP_fileput($ftpconnect,$filetoupload,$filetouploadnameonserver)
if not @error Then
msgbox(64,"Datei Hochladen","Hochladen abgeschlossen.")
guictrlsetdata($Label3,"Status: Verbunden!")
Else
msgbox(64,"Datei Hochladen","Hochladen fehlgeschlagen." & @crlf & "Ist die Datei eine Verknüpfung oder beschädigt?")
guictrlsetdata($Label3,"Status: Verbunden!")
EndIf
EndIf
Case $Button3
$downloadname = guictrlread($Input2)
guictrlsetdata($Label3,"Status: Herunterladen...")
$filesizeonserver = _ftp_filegetsize($ftpconnect,$downloadname)
if not $filesizeonserver <= 0 then
_ftp_fileget($ftpconnect,$downloadname,$downloadname)
msgbox(64,"Datei Herunterladen","Herunterladen abgeschlossen.")
guictrlsetdata($Label3,"Status: Verbunden!")
Else
msgbox(64,"Datei Herunterladen","Diese Datei existiert nicht!")
guictrlsetdata($Label3,"Status: Verbunden!")
EndIf
EndSwitch
WEndfunc _deconnector()
[/autoit]
guictrlsetdata($Label3,"Status: Beenden...")
_ftp_close($ftpopen)
Exit
EndFuncManchmal schmiert es auch beim Verbinden einfach ab, und macht garnichts mehr...
BITTE HELFEN! -
Hallo HugBert,
verwende einfach Dateinamen ohne Leerzeichen, dann klappt es ja. Hast du schon einmal versucht mit einem FTP-Client wie z.B.: FileZilla Dateien mit Leerstellen auf diesen FTP-Server zu kopieren?
[autoit]
Auf meinem FTP-Zugang funktioniert_FTP_FilePut
[/autoit]nämlich auch bei Dateien mit Leerstellen. Getestet mit example1 aus der Hilfe zu _FTP_FilePut.
[autoit]
Eine andere Möglichkeit die zu prüfen ist ob diese Zeile:$filetouploadnameonserver = StringRegExpReplace($filetoupload, '.+\\(.+)', '$1')
[/autoit]wirklich einen zulässigen Dateinamen zurückliefert. Einfach danach
[autoit]ConsoleWrite($filetoupload & @CRLF)
[/autoit]einfügen und den Dateinamen überprüfen,
mfg autoBert
-
Ich hatte es jetzt anders gelöst, aber jetzt das nächste Problem, ES GEHT EINFACH NICHT! Hier mal die Funktion:
Spoiler anzeigen
[autoit]func _uploader()
[/autoit]
$filetoupload1 = guictrlread($Input1)
if not $filetoupload1 = "" Then
msgbox(64,"Datei Hochladen","Falls deine Datei Leerzeichen enthält, werden diese durch ein" & @crlf & '"_"' & @crlf & "ersetzt.")
guictrlsetdata($Label3,"Status: Hochladen...")
$filetoupload2 = StringRegExpReplace($filetoupload1, ".+\\(.+)", "$1")
$filetoupload3 = stringregexpreplace($filetoupload2," ","_")
_FTP_fileput($ftpconnect,$filetoupload1,$filetoupload3)
if not @error Then
msgbox(64,"Datei Hochladen","Hochladen abgeschlossen." & @crlf & "Der Name der Datei auf dem Server ist:" & @crlf & $filetoupload3)
guictrlsetdata($Label3,"Status: Verbunden!")
Else
msgbox(64,"Datei Hochladen","Hochladen fehlgeschlagen." & @crlf & "Ist die Datei eine Verknüpfung oder beschädigt?")
guictrlsetdata($Label3,"Status: Verbunden!")
EndIf
Else
msgbox(64,"Datei Hochladen","Du musst zuerst eine Datei auswählen!")
EndIf
EndFunc
Es hängt einfach und macht garnichts, und nach 10 Minuten kommt die Meldung, dass das Hochladen fehlgeschlagen sei Oo
Bitte helfen!!!Und ja, Es werden korrekte Dateinamen ausgegeben, aus denen ich dann die Leerzeichen mit _ ersetzen will, das geht auch, nur stoppt es halt beim Hochladen -.-
-
Hallo HugBert,
ich habe eimal dein ursprüngliches Skript getestet. Dieses funktioniert bei mir einwandfrei, zumindest solange der FTP-Server erreichbar ist. Deshalb ein kleiner Änderungsvorschlag:
Spoiler anzeigen
[autoit]#RequireAdmin
[/autoit] [autoit][/autoit] [autoit]
#include <FTPEx.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#region GuiGlobal $ftpopen, $ftpconnect ;<================ hier
[/autoit] [autoit][/autoit] [autoit]$Form1 = GUICreate("Fil0ad", 346, 140, 192, 124)
[/autoit] [autoit][/autoit] [autoit]
$Group1 = GUICtrlCreateGroup("Datei Upload", 8, 8, 329, 49)
$Label1 = GUICtrlCreateLabel("Pfad:", 16, 24, 29, 17)
$Input1 = GUICtrlCreateInput("", 48, 24, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT, $ES_READONLY))
$Button1 = GUICtrlCreateButton("Suchen", 176, 24, 75, 25)
$Button2 = GUICtrlCreateButton("Hochladen", 256, 24, 75, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Datei Download", 8, 64, 329, 49)
$Label2 = GUICtrlCreateLabel("Dateiname:", 16, 80, 58, 17)
$Input2 = GUICtrlCreateInput("", 80, 80, 121, 21)
$Button3 = GUICtrlCreateButton("Herunterladen", 208, 80, 123, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label3 = GUICtrlCreateLabel("Status: Inaktiv", 8, 120, 256, 17)
$Label4 = GUICtrlCreateLabel("Slots:", 272, 120, 30, 17)
$slots = GUICtrlCreateLabel("X", 304, 120, 10, 17)
GUICtrlCreateLabel("", 128, 120, 4, 4)
$Label5 = GUICtrlCreateLabel(" / 8", 312, 120, 21, 17)
GUISetState(@SW_SHOW)
#endregion GuiGUICtrlSetData($Label3, "Status: Verbinden...") ;<============ und ab hier
[/autoit] [autoit][/autoit] [autoit]
$ftpopen = _FTP_Open("FTP1")
$ftpconnect = _FTP_Connect($ftpopen, "Sag ich dir nicht", "Das auch nicht", "und das auch nicht")
If Not @error Then
GUICtrlSetData($Label3, "Status: Verbunden!")
GUICtrlSetState($Button3, $GUI_ENABLE)
GUICtrlSetState($Button2, $GUI_ENABLE)
Else
GUICtrlSetData($Label3, "Status: Keine Verbindung!")
GUICtrlSetState($Button3, $GUI_DISABLE)
GUICtrlSetState($Button2, $GUI_DISABLE)
EndIf
;<==================== bis hier anschauen Rest ist dein OriginalWhile 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
_deconnector()Case $Button1
[/autoit] [autoit][/autoit] [autoit]
$fileopendialog1 = FileOpenDialog("Datei Hochladen", @ScriptDir, "Alles (*.*)")
If Not $fileopendialog1 = "" Then
GUICtrlSetData($Input1, $fileopendialog1)
EndIfCase $Button2
[/autoit] [autoit][/autoit] [autoit]
$filetoupload = GUICtrlRead($Input1)
If Not $filetoupload = "" Then
GUICtrlSetData($Label3, "Status: Hochladen...")
$filetouploadnameonserver = StringRegExpReplace($filetoupload, '.+\\(.+)', '$1')
ConsoleWrite($filetoupload & @CRLF)
_FTP_FilePut($ftpconnect, $filetoupload, $filetouploadnameonserver)
If Not @error Then
MsgBox(64, "Datei Hochladen", "Hochladen abgeschlossen.")
GUICtrlSetData($Label3, "Status: Verbunden!")
Else
MsgBox(64, "Datei Hochladen", "Hochladen fehlgeschlagen." & @CRLF & "Ist die Datei eine Verknüpfung oder beschädigt?")
GUICtrlSetData($Label3, "Status: Verbunden!")
EndIf
EndIfCase $Button3
[/autoit] [autoit][/autoit] [autoit]
$downloadname = GUICtrlRead($Input2)
GUICtrlSetData($Label3, "Status: Herunterladen...")
$filesizeonserver = _FTP_FileGetSize($ftpconnect, $downloadname)
If Not $filesizeonserver <= 0 Then
_FTP_FileGet($ftpconnect, $downloadname, $downloadname)
MsgBox(64, "Datei Herunterladen", "Herunterladen abgeschlossen.")
GUICtrlSetData($Label3, "Status: Verbunden!")
Else
MsgBox(64, "Datei Herunterladen", "Diese Datei existiert nicht!")
GUICtrlSetData($Label3, "Status: Verbunden!")
EndIf
EndSwitch
WEndFunc _deconnector()
[/autoit]
GUICtrlSetData($Label3, "Status: Beenden...")
_FTP_Close($ftpopen)
Exit
EndFunc ;==>_deconnectormfg autoBert
-
Jaa! Ich weiß nicht wie du es gemacht hast, aber es geht
Edit: Oder auch doch nicht -.- Wäre jemand so nett dass hier mal zu testen? Bei mir geht's nähmlich nicht...
Spoiler anzeigen
[autoit]#RequireAdmin
[/autoit] [autoit][/autoit] [autoit]
#include <FTPEx.au3>
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region Gui
$Form1 = GUICreate("Fil0ad", 346, 140, 192, 124)
$Group1 = GUICtrlCreateGroup("Datei Upload", 8, 8, 329, 49)
$Label1 = GUICtrlCreateLabel("Pfad:", 16, 24, 29, 17)
$Input1 = GUICtrlCreateInput("", 48, 24, 121, 21, BitOR($GUI_SS_DEFAULT_INPUT,$ES_READONLY))
$Button1 = GUICtrlCreateButton("Suchen", 176, 24, 75, 25)
$Button2 = GUICtrlCreateButton("Hochladen", 256, 24, 75, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Group2 = GUICtrlCreateGroup("Datei Download", 8, 64, 329, 49)
$Label2 = GUICtrlCreateLabel("Dateiname:", 16, 80, 58, 17)
$Input2 = GUICtrlCreateInput("", 80, 80, 121, 21)
$Button3 = GUICtrlCreateButton("Herunterladen", 208, 80, 123, 25)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Label3 = GUICtrlCreateLabel("Status: Inaktiv", 8, 120, 256, 17)
$Label4 = GUICtrlCreateLabel("Slots:", 272, 120, 30, 17)
$slots = GUICtrlCreateLabel("X", 304, 120, 10, 17)
GUICtrlCreateLabel("", 128, 120, 4, 4)
$Label5 = GUICtrlCreateLabel(" / 8", 312, 120, 21, 17)
GUISetState(@SW_SHOW)
#EndRegion GuiGlobal $ftpopen, $ftpconnect
[/autoit] [autoit][/autoit] [autoit]guictrlsetdata($Label3,"Status: Verbinden...")
[/autoit] [autoit][/autoit] [autoit]
$ftpopen = _FTP_Open("FTP1")
$ftpconnect = _FTP_Connect($ftpopen,"SERVER","USERNAME","PW")
if not @error then
guictrlsetdata($Label3,"Status: Verbunden!")
Else
msgbox(64,"Fil0ad","Server nicht gefunden.")
Exit
EndIfWhile 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
guictrlsetdata($Label3,"Status: Beenden...")
_ftp_close($ftpopen)
Exit
Case $Button1
$fileopendialog1 = fileopendialog("Datei Hochladen",@scriptdir,"Alles (*.*)")
if not $fileopendialog1 = "" Then
guictrlsetdata($Input1,$fileopendialog1)
EndIf
Case $Button2
$filetoupload1 = guictrlread($Input1)
if not $filetoupload1 = "" Then
msgbox(64,"Datei Hochladen","Falls der Name deiner" & @crlf & "Datei Leerzeichen enthält, werden diese durch ein" & @crlf & '"_"' & @crlf & "ersetzt.")
guictrlsetdata($Label3,"Status: Hochladen...")
$filetoupload2 = StringRegExpReplace($filetoupload1, ".+\\(.+)", "$1")
$filetoupload3 = stringregexpreplace($filetoupload2," ","_")
consolewrite($filetoupload3)
_FTP_fileput($ftpconnect,$filetoupload1,$filetoupload3)
if @error Then
msgbox(64,"Datei Hochladen","Hochladen fehlgeschlagen." & @crlf & "Ist die Datei eine Verknüpfung oder beschädigt?")
guictrlsetdata($Label3,"Status: Verbunden!")
Else
filewrite("Fil0adLog.txt","ULd: " & $filetoupload3 & @crlf)
msgbox(64,"Datei Hochladen","Hochladen abgeschlossen." & @crlf & "Der Name der Datei auf dem Server ist:" & @crlf & $filetoupload3)
guictrlsetdata($Label3,"Status: Verbunden!")
EndIf
Else
msgbox(64,"Datei Hochladen","Du musst zuerst eine Datei auswählen!")
EndIf
Case $Button3
$filetodownload1 = guictrlread($Input2)
guictrlsetdata($Label3,"Status: Herunterladen...")
_ftp_filegetsize($ftpconnect,$filetodownload1)
if @error then
msgbox(64,"Datei Herunterladen","Diese Datei wurde nicht gefunden" & @crlf & "oder ein Fehler ist aufgetreten." & @crlf & "Bitte versuchen sie es erneut.")
guictrlsetdata($Label3,"Status: Verbunden!")
Else
_ftp_fileget($ftpconnect,$filetodownload1,$filetodownload1)
filewrite("Fil0adLog.txt","DLd: " & $filetodownload1 & @crlf)
msgbox(64,"Datei Herunterladen","Herunterladen abgeschlossen.")
guictrlsetdata($Label3,"Status: Verbunden!")
EndIf
EndSwitch
WEnd -
Hallo HugBert,
auch dieses Progtamm läuftbei mir mit meinem Webspace einwandfrei. Aber ach hier noch ein minimaler Änderunsvorschlag:
[autoit]$ftpconnect = _FTP_Connect($ftpopen, "Server", "Benutzer", "Passwort")
[/autoit]
If Not @error Then
GUICtrlSetData($Label3, "Status: Verbunden!")
Else
_FTP_Close($ftpopen) ;<==================================
MsgBox(64, "Fil0ad", "Server nicht gefunden.")
Exit
EndIfDieser Else-Zweig sollte zwar bei korrekten Zugangsdaten und funktionierendem FTP-Server nie vorkommen es kann aber keinesfalls schaden die FTP-Sitzung korrekt zu beenden.
PS.: Ich teste als Nich-Admin auf Win XP SP3 #RequireAdmin ist bei mir entfernt dies wird nicht benötigt ausser du wilst es nur den Admin benutzen lassen dazu kannst du aber auch IsAdmin benutzen,
mfg autoBert
-
Ich möchte es meinen Freunden geben, und einige von denen haben Windows 7, und dort gehen die FTP Befehle nur als Admin.
PS: Wo hast du deinen Webspace? Bei einem Freehoster? -
Hallo HugBert,
ich habe meine Webseite bei http://www.lima-city.de/homepage/ref:225588