tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von vfl_freak
  • 1 Beitrag von sheel
  • 1 Beitrag von vfl_freak
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
946
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    MarcoIT MarcoIT ist offline Rookie
    Registriert seit
    Dec 2011
    Beiträge
    8
    Hallo Zusammen
    Vielleicht könnt Ihr mir ja helfen.
    Ich habe ein Programm geschrieben, dass eine gescannte Datei erstmal lokal speichert und dann den Windowsopenfile-Dialog öffnet (gleich im Ordner in dem die Datei gespeichert wurde). Die Dateien die gescannt werden, erhalten den namen: "img_"aktuelle_Uhrzeit".jpg". Wenn eine Datei mit dem selben Namen bereits in dem Ordner ist, wird die Datei "img_"aktuelle_Uhrzeit_1".jpg" benannt. Wird eine Datei ausgewählt, wird die Auswahl bestätigt und im Anschluss die Datei hochgeladen. Ist dort eine Datei bereits vorhanden, überschreibt der FTP-Server einfach die Datei und die "alte"-Datei ist weg...!

    Wie kann ich das umgehen, dass der FTP-Server mir die Datei überschreibt?
     

  2. #2
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    Hi
    und Willkommen bei tutorials.de

    Zuerst eben abfragen, ob es eine Datei mit dem Namen gibt.
    Wirklich sicher ist das aber auch nicht.
    Wenn die andere Datei gerade zwischen Abfrage und eigenem Upload kommt...

    FTP ist für sowas ungeeignet.
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  3. #3
    MarcoIT MarcoIT ist offline Rookie
    Registriert seit
    Dec 2011
    Beiträge
    8
    Hey danke dir Sheel für die schnelle Antwort,
    die Abfrage pb die Datei bereits vorhanden ist habe ich schon. Ich zeig dir mal was ich bereits so alles habe, vllt kannst du dir dann ein besseres Bild machen.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    
    Imports System.Net
    Imports System.IO.Directory
    Imports System.Net.WebRequestMethods
    Imports System.Drawing.Printing
    Imports System.Globalization
    Imports System.IO
    Imports System.Runtime.InteropServices
    Imports Microsoft.Win32
     
    Public Class Scanbutton
     
            'Deklaration
            Dim ziel As String
            Dim user As String
            Dim pwd As String
     
            Dim datum As String
            Dim ofd As New OpenFileDialog
            Dim sfd As New SaveFileDialog
            Dim fso As System.Object
     
            Dim imagepfad As String
            Dim dialog As New WIA.CommonDialog
            Dim image As WIA.ImageFile = Nothing
     
            Dim i As String
     
        Private Declare Function GetTickCount Lib "kernel32" () As Long
            Private Const ConnectTimeOut = 30
     
        Private Sub Scanbutton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            'Zugangsdaten
            user = ("Benutzer")
            pwd = ("Passwort")
     
            i = 0
            fso = New Object
            'Datum Formatierung
            datum = FormatDateTime(Now, DateFormat.ShortTime)
            datum = Replace(datum, " ", "_")    ' leerzeichen durch unterstrich ersetzen
            datum = Replace(datum, ".", "")     ' Punkte entfernen
            datum = Replace(datum, ":", "")     ' Doppelpunkte entfernen
     
            MsgBox("Legen Sie ein Dokument in Ihren Scanner.")
            'Hierbei wird die Windows GUI aufgerufen die zum Scannen verwendet werden kann.
            Try
                image = dialog.ShowAcquireImage(WIA.WiaDeviceType.ScannerDeviceType, , , , False, )
            Catch ex As Exception
                MsgBox("Ein Fehler ist aufgetreten! Überprüfen Sie ob das Gerät Eingeschaltet und angeschlossen ist." & Environment.NewLine & Environment.NewLine & ex.Message)
                End
            End Try
     
            If Not image Is Nothing Then
                imagepfad = ("C:\Scanbilder\")
     
                If FileExists(imagepfad + "img_" + datum + ".jpg") Then
                    i = i + 1
                    image.SaveFile(imagepfad + "img_" + datum + "_" + i + ".jpg")
                Else
                    image.SaveFile(imagepfad + "img_" + datum + ".jpg")
                End If
     
            Else
                MsgBox("Es wurde kein Bild erfasst!", MsgBoxStyle.Information, "Information")
                End
            End If
     
            ofd.InitialDirectory = "C:\Scanbilder\"
            ofd.Filter = "Gescannte Dokumente (*.jpg)|*.jpg"
            ofd.Title = "Datei zum Öffnen auswählen"
     
            If ofd.ShowDialog() = DialogResult.OK Then
                MsgBox("Datei wurde ausgewählt.")
            Else
                MsgBox("Abbruch durch User.")
                End
            End If
     
            Dim webclient As New Net.WebClient
            webclient.Credentials = New Net.NetworkCredential(user, pwd)
            ziel = ("FTPServer")
            Dim request As Net.FtpWebRequest = Net.FtpWebRequest.Create(ziel)
            request.Method = Net.WebRequestMethods.Ftp.ListDirectory
            request.Credentials = New Net.NetworkCredential(user, pwd)
     
            Try
                request.GetResponse()
                MsgBox("Connected")
            Catch ex As Exception
                MsgBox("Kein Connect")
                Close()
            End Try
     
            My.Computer.Network.DownloadFile(ofd.FileName, ofd.SafeFileName, user, pwd)
     
            If ftpfileExists(ziel) = True Then
                ziel = ("FTPServer/" + ofd.SafeFileName)
                My.Computer.Network.UploadFile(ofd.FileName, ziel, user, pwd, True, 500)
                MsgBox("Erfolgreiches Hochladen!")
                End
            Else
                MsgBox("Der Zielordner zum Einfügen der gescannten Dokumente, ist nicht verfügbar.")
                MsgBox("Überprüfen Sie ob der Zielordner vorhanden ist.")
                End
            End If
        End Sub
     
        '########################################################################################################################################
        ' Funktion zum überprüfen eines Ordners
        '########################################################################################################################################
     
        Public Function DirExists(ByVal OrigFolder As String)
            Dim fs
            fs = CreateObject("Scripting.FileSystemObject")
            DirExists = fs.folderexists(OrigFolder)
        End Function
     
        '########################################################################################################################################
        ' Funktion zum überprüfen einer Datei
        '########################################################################################################################################
     
        Private Function FileExists(ByVal FileName As String) As Boolean
            On Error Resume Next
            FileExists = Not CBool(GetAttr(FileName) And (vbDirectory Or vbVolume))
            On Error GoTo 0
        End Function
     
        '########################################################################################################################################
        ' Funktion zum überprüfen einer Datei auf dem FTP-Server
        '########################################################################################################################################
     
        Private Function ftpfileExists(ByVal FileName As String)
     
            If (My.Computer.Network.IsAvailable = True) Then
                MsgBox("Hat geklappt")
                Return (True)
                End
            Else
                MsgBox("Hat nicht geklappt")
                Return (False)
                End
            End If
        End Function
     
        '########################################################################################################################################
        ' Button Upload um Scanvorgang zu umgehen
        '########################################################################################################################################
     
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles einfacher_upload.Click
     
            MsgBox("Wählen Sie eine Datei aus, die Sie hochladen möchten.")
            upload()
        End Sub
     
        '########################################################################################################################################
        ' Funktion Upload einer Datei für den Button Upload
        '########################################################################################################################################
     
        Private Function upload() As Action
     
            ofd.InitialDirectory = "C:\Scanbilder\"
            ofd.Filter = "Gescannte Dokumente (*.jpg)|*.jpg"
            ofd.Title = "Datei zum Öffnen auswählen"
     
            If ofd.ShowDialog() = DialogResult.OK Then
                MsgBox("Datei wurde ausgewählt.")
            Else
                MsgBox("Abbruch durch User.")
                End
            End If
     
            ziel = ("FTPServer/ftpsonstige/Scanbilder/")
            If ftpfileExists(ziel) = True Then
                ziel = ("FTPServer/ftpsonstige/Scanbilder/" + ofd.SafeFileName)
                My.Computer.Network.UploadFile(ofd.FileName, ziel, user, pwd, True, 500)
                MsgBox("Erfolgreiches Hochladen!")
                End
            Else
                MsgBox("Der Zielordner zum Einfügen der gescannten Dokumente, ist nicht verfügbar.")
                MsgBox("Überprüfen Sie ob der Zielordner vorhanden ist.")
                End
            End If
     
        End Function

    Hilft dir das weiter?
     

  4. #4
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    meinst Du die Funktion "ftpfileExists"
    Was sollte die denn prüfen ?

    Gruß
    Klaus
     
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  5. #5
    MarcoIT MarcoIT ist offline Rookie
    Registriert seit
    Dec 2011
    Beiträge
    8
    Hallo Freak,

    naja ftpfileexists, sollte die Datei auf dem FTP-Server überprüfen aber da stimmt noch was nicht. Ich hatte eigentlich vor auf den FTP Server einen Zugriff zu erreichen aber irgendwie bin ich daran vorbeigekommen und dennoch funktioniert alles
    Bist du der Meinung ich kann das anders gestalten?
     

  6. #6
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    Zitat Zitat von MarcoIT Beitrag anzeigen
    naja ftpfileexists, sollte die Datei auf dem FTP-Server überprüfen aber da stimmt noch was nicht. Ich hatte eigentlich vor auf den FTP Server einen Zugriff zu erreichen aber irgendwie bin ich daran vorbeigekommen und dennoch funktioniert alles
    Bist du der Meinung ich kann das anders gestalten?
    Nun ja, was Du dort prüfst, ist doch wohl nur dies her, oder ?
    http://msdn.microsoft.com/de-de/libr...=vs.90%29.aspx

    Du übergibst zwar 'nen Dateinamen an die Funktion, machst da aber konkret nichts mit !!
    Du solltest versuchen die Datei zu lesen, um zu schauen, ob sie vorhanden ist ....

    Gruß
    Klaus
    MarcoIT bedankt sich. 
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  7. #7
    MarcoIT MarcoIT ist offline Rookie
    Registriert seit
    Dec 2011
    Beiträge
    8
    Hey,

    uff... :O da schauste mal was alles an einem vorbei geht... mist... Sollte ich aber FileExists verwenden, dann geht das ja nicht da die Funktion nur für Lokale Überprüfung gilt.
    Wenn ich es mit einem Download versuchen sollte, dann TRUE zurück bekomme, sollte ich eigentlich auch eine Art überprüfung haben nicht wahr
     

  8. #8
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.504
    Noch einmal: Bei FTP kannst du dir nicht sicher sein, dass nichts verloren geht.
    Wenn das wirklich immer 100% sicher sein soll, kann man FTP vergessen.
    MarcoIT bedankt sich. 
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  9. #9
    MarcoIT MarcoIT ist offline Rookie
    Registriert seit
    Dec 2011
    Beiträge
    8
    Danke für die Info aber ich weiß in dem Falle ist FTP das sicherste da:
    1. das FTP direkt am VPN ist
    2. File Transport Protocoll sagt doch alles oder?
    3. HTML / PHP usw... ist nicht gewünscht deswegen muss es FTP sein.

    Eine PHP Variante habe ich bereits gemacht ist aber nicht erwünscht
     

  10. #10
    Avatar von vfl_freak
    vfl_freak vfl_freak ist offline Mitglied Diamant
    Registriert seit
    Aug 2007
    Ort
    Niedersachsen
    Beiträge
    2.161
    Moin,

    hier mal eine nette Übersicht der verfügbaren FTP-Befehle:
    http://www.informatik.fh-luebeck.de/...en/node44.html
    Mehr ist wirklich nicht ...

    Du könntest natürlich neben dem Download versuchen, mit DIR das Verzeichnis aufzulisten und dann darin den Dateinamen zu suchen (ist aber bei vielen Einträgen auch nicht so wirklich lustig).

    Gibt es denn nur einen Client, der diese Dateien speichern will oder mehrere? Weil: je mehr, desto unsicherer wird es, wie Sheel ja schon schrieb!

    Oder bastle Dir eindeutigere Dateinamen - etwa Uhrzeit mit Hunderstel etc. !

    Gruß
    Klaus
    MarcoIT bedankt sich. 
    Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!

    Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
    -------------------------------------------------------------------------------------------------
    Ich beantworte keine Fragen per PN !!
    Stellt Eure Fragen im Forum - dann haben alle etwas davon !!

  11. #11
    MarcoIT MarcoIT ist offline Rookie
    Registriert seit
    Dec 2011
    Beiträge
    8
    Ich danke Euch beiden!
    Zum ersten mal erhalte ich ein vernünftiges Freedback mit Erklärung!
    Ich werde euch auf dem laufenden halten und am Ende ein Tut schreiben wie das ganze geht mit FTP Scan und Upload erstmal bis auf weiteres würde ich sagen:

    Close dank Eurer Hilfe!! Danke
     

Ähnliche Themen

  1. Antworten: 31
    Letzter Beitrag: 31.12.10, 18:40
  2. Style Dateien überschreiben
    Von Dark Ranger im Forum CSS
    Antworten: 3
    Letzter Beitrag: 18.06.08, 20:57
  3. xml-dateien / bilder - cache umgehen
    Von harrry im Forum Flash Plattform
    Antworten: 6
    Letzter Beitrag: 07.08.06, 17:47
  4. Überschreiben von Dateien per vsftpd
    Von Riemenschneider im Forum Linux & Unix
    Antworten: 5
    Letzter Beitrag: 02.08.04, 01:46
  5. FTP-Download : Dateien nicht überschreiben
    Von Bombi im Forum Hosting & Webserver
    Antworten: 1
    Letzter Beitrag: 15.04.03, 02:55

Stichworte