Страница: 1 |
Страница: 1 |
Вопрос: stream и base64string
Добавлено: 31.01.07 20:08
Автор вопроса: AlexDerS
как преобразовать stream, содержащий изображение ( получен как imgStream=OpenFileDialog1.OpenFile )
в base64string ???
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #1
Добавлено: 31.01.07 22:44
1. Получить из потока массив байт
2. Через System.Convert.ToBase64String конвертировать его в Base64String
Номер ответа: 2
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #2
Добавлено: 01.02.07 13:01
Посмотри
System.Security.Cryptography.FromBase64Transform
System.Security.Cryptography.ToBase64Transform
Номер ответа: 3
Автор ответа:
AlexDerS
Вопросов: 37
Ответов: 61
Профиль | | #3
Добавлено: 02.02.07 00:11
А как это сделать?
По примеру с MSDN получается фигня какая-то...
Номер ответа: 4
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #4
Добавлено: 02.02.07 08:53
На какой студии работаешь... 2003 or 2005?
Номер ответа: 5
Автор ответа:
AlexDerS
Вопросов: 37
Ответов: 61
Профиль | | #5
Добавлено: 02.02.07 09:33
2005
Номер ответа: 6
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #6
Добавлено: 02.02.07 10:41
Если работаешь с большими объемами данных, то, чтоб не грузить их все в ОЗУ, можно использовать метод с Transform'ерами
Using FS1 As New FileStream("d:\vista.ppt", FileMode.Open, FileAccess.Read)
Using FS2 As New FileStream("d:\vista2.ppt", FileMode.Create, FileAccess.Write)
Using CS As New CryptoStream(FS1, Base64Transform, CryptoStreamMode.Read)
Const BufLength As Integer = 1024 * 1024 * 1
Dim CurLength As Integer
Dim Buf(BufLength) As Byte
Do
CurLength = CS.Read(Buf, 0, BufLength)
FS2.Write(Buf, 0, CurLength)
Loop While CurLength > 0
End Using
End Using
End Using
Using FS1 As New FileStream("d:\vista2.ppt", FileMode.Open, FileAccess.Read)
Using FS2 As New FileStream("d:\vista3.ppt", FileMode.Create, FileAccess.Write)
Using CS As New CryptoStream(FS1, Base64Transform, CryptoStreamMode.Read)
Const BufLength As Integer = 1024 * 1024 * 1
Dim CurLength As Integer
Dim Buf(BufLength) As Byte
Do
CurLength = CS.Read(Buf, 0, BufLength)
FS2.Write(Buf, 0, CurLength)
Loop While CurLength > 0
End Using
End Using
End Using
Номер ответа: 7
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #7
Добавлено: 02.02.07 10:44
Самый простой способ считать содержимое файла в массив:
У класса OpenFileDialog есть свойство, возаращающее путь к выбраному файлу.