vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Fortgeschrittene
Upload per Webservice klappt nicht richtig 
Autor: Breaker
Datum: 29.04.08 13:55

Hallo zusammen!

folgendes: Ich lade per Webservice Dateien von einem Ordner in einen anderen Ordner auf einem anderen Rechner.

Die Methode auf dem Webservice sehen folgendemassen aus:

 <WebMethod()> _
    Public Function UploadFile(ByVal docbinaryarray As Byte(), ByVal docname As _
    String) As Boolean
 
        Dim strdocPath As String
        strdocPath = "C:\Inetpub\wwwroot\FileUploadDownloadSvc\temp\" + docname
        Dim objfilestream = New System.IO.FileStream(strdocPath, _
          System.IO.FileMode.Create, System.IO.FileAccess.ReadWrite)
        objfilestream.Write(docbinaryarray, 0, docbinaryarray.Length)
        objfilestream.Close()
        Return True
    End Function
Auf dem Client, wo die Quelldateien liegen, läuft folgendes Programm:

Public Class Form1
    Inherits System.Windows.Forms.Form
    ' FileSystemWatcher-Objekt erzeugen
    Dim WithEvents FileSystemWatcher1 As New System.IO.FileSystemWatcher
 
    Private Function UploadFile(ByVal sFilePath As String, ByVal sFileName As _
      String)
 
        Dim myUploadService As New FileUploadWebService.Service1
        Dim objfilestream = New System.IO.FileStream(sFilePath, _
          System.IO.FileMode.Open, System.IO.FileAccess.Read)
        Dim len As Integer = objfilestream.Length
        Dim mybytearray(len) As Byte
        Dim lRet As Long
        objfilestream.Read(mybytearray, 0, len)
        lRet = myUploadService.UploadFile(mybytearray, sFileName)
        objfilestream.Close()
        myUploadService = Nothing
        objfilestream = Nothing
        Return (lRet)
    End Function
 
    Public Function FileInUse(ByVal sFile As String) As Boolean
        ' Prüft, ob die angegeben Datei aktuell durch eine
        ' andere Anwendung in Benutzung ist
        Dim bInUse As Boolean = False
 
        If FileExists(sFile) Then
            Try
                ' Versuch, Datei EXKLUSIV zu öffnen
                Dim F As Short = FreeFile()
                FileOpen(F, sFile, OpenMode.Binary, OpenAccess.ReadWrite, _
                  OpenShare.LockReadWrite)
                FileClose(F)
            Catch
                ' Bei Fehler ist die Datei in Benutzung
                bInUse = True
            End Try
        End If
 
        ' Rückgabewert
        Return (bInUse)
    End Function
 
    Public Function FileExists(ByVal sFile As String) As Boolean
        ' Prüft, ob die angegeben Datei existiert
        Return (System.IO.File.Exists(sFile))
    End Function
 
    Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) _
      Handles Me.Load
        ' Verzeichnis, dessen Dateien ermittelt werden sollen
        Dim sPath As String
        Dim sFullPath As String
        Dim lRet As Long
 
        ' ggf. abschließenden Backslash entfernen
        sPath = "D:\Inetpub\wwwroot\nsn-transfer\out" '"S:\out" 
        If sPath.EndsWith("\") And sPath.Length > 3 Then
            sPath = sPath.Substring(0, sPath.Length - 1)
        End If
 
        ' Directory-Object erstellen
        Dim oDir As New System.IO.DirectoryInfo(sPath)
 
        ' alle Dateien des Ordners
        Dim oFiles As System.IO.FileInfo() = oDir.GetFiles()
 
        ' Datei-Array durchlaufen und in 
        ' ListBox übertragen
        Dim oFile As System.IO.FileInfo
 
        For Each oFile In oFiles
            Do Until FileInUse(sFullPath) = False
            Loop
            lRet = UploadFile(sFullPath, oFile.ToString)
            'End If
            If lRet = -1 Then 'Übertragen
                Kill(sFullPath)
                'AddStatus("File moved: " & sFileName.ToString)
            Else 'Fehler bei der Übertragung
                'AddStatus("Error moving file: " & sFileName.ToString)
            End If
        Next
 
        End
 
    End Sub
 
End Class
Und nun mein Problem: Laut meinem Chef, wird bei jedem Upload ein Byte angehängt - Bsp: ich erstelle im Quellpfad einen leere Textdatei mit 0 kb, ankommen tut ein leeres Dokument mit 1 kb.
Einen Fehler kann ich jedoch im Code nicht finden. Könnt ihr mir eventuell helfen?

Kurze Erklärung: Wichtig ist im Client-Code die Funktion "UploadFile" - Entweder hier ist was falsch, oder auf dem Webservice. Aber ich sehe eben keinen überflüssigen Byte? :/

Gruss Breaker

Beitrag wurde zuletzt am 29.04.08 um 14:06:22 editiert.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Upload per Webservice klappt nicht richtig1.021Breaker29.04.08 13:55
Re: Upload per Webservice klappt nicht richtig583Melkor29.04.08 14:07
Re: Upload per Webservice klappt nicht richtig578Breaker29.04.08 14:17
Re: Upload per Webservice klappt nicht richtig569Melkor29.04.08 14:48

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel