Hallo "Manfred X",
vielen Dank für den Code. Leider funktioniert er nicht.
Wenn ich z.B. eine PDF oder DOCX Dateien hin und her
speichere, kommt am Ende eine defekte Datei raus.
Gruß
Jörg Trapp
Private Function FileToBase64(ByVal sFileIn As String, ByVal sFileOut As _
String) As Boolean
Dim bResult As Boolean = False
Dim oReader As IO.FileStream = Nothing
Dim oWriter As IO.StreamWriter = Nothing
Try
' Falls Output-Datei bereits existiert, löschen
If IO.File.Exists(sFileOut) Then IO.File.Delete(sFileOut)
' Input-Datei zum Lesen öffnen
oReader = New IO.FileStream(sFileIn, IO.FileMode.Open, _
IO.FileAccess.Read)
' Output-Datei zum Schreiben öffnen
oWriter = New IO.StreamWriter(sFileOut, False, _
System.Text.Encoding.UTF8)
' Datei blockweise einlesen
Dim nBytes As Integer
Dim Buffer(56) As Byte
Do
nBytes = oReader.Read(Buffer, 0, Buffer.Length)
If nBytes > 0 Then
' Inhalt nach Base64 codieren und in Output-Datei schreiben
oWriter.WriteLine(System.Convert.ToBase64String(Buffer, 0, _
nBytes))
End If
Loop Until nBytes = 0
' Streams (Dateien) schließen
oReader.Close()
oWriter.Close()
bResult = True
Catch ex As Exception
If oReader IsNot Nothing Then oReader.Close()
If oWriter IsNot Nothing Then oWriter.Close()
End Try
Return bResult
End Function
Private Function FileFromBase64(ByVal sFileIn As String, sFileOut As String) As _
Boolean
If Not IO.File.Exists(sFileIn) Then Return False
Try
Dim str64 As String = IO.File.ReadAllText(sFileIn)
Dim bytes() As Byte = System.Convert.FromBase64String(str64)
IO.File.WriteAllText(sFileOut, System.Text.Encoding.UTF8.GetString( _
bytes))
Return True
Catch
Return False
End Try
End Function '-------------------------------------------------------------
FileToBase64("Alt.docx", "Alt.docx.dat")
FileToBase64("Alt.pdf", "Alt.pdf.dat")
'-------------------------------------------------------------
FileFromBase64("Alt.docx.dat", "Neu.docx")
FileFromBase64("Alt.pdf.dat", "Neu.pdf")
'------------------------------------------------------------- |