|
|
|
| Реально сделать в аксе?
Из изображения должно получится нечто такое:
PHOTO;ENCODING=BASE64;JPEG:/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAIBAQEBAQIBAQE
CAgICAgQDAgICAgUEBAMEBgUGBgYFBgYGBw kIBgcJBwYGCAsICQoKCgoKBggLDAsKDAkKC gr/
2wBDAQICAgICAgUDAwUKBwYHCgoKCgoKCgo KCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg oKC
goKCgoKCgoKCgoKCgr/wAARCABgAGADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAA
ECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQR BRIhMUEGE1FhByJxFDKBkaE
|
только очень длинное | |
|
| |
|
|
|
|
Function EncodeBase64(text As String) As String
Dim arrData() As Byte
arrData = StrConv(text, vbFromUnicode)
Dim objXML As MSXML2.DOMDocument
Dim objNode As MSXML2.IXMLDOMElement
Set objXML = New MSXML2.DOMDocument
Set objNode = objXML.createElement("b64")
objNode.dataType = "bin.base64"
objNode.nodeTypedValue = arrData
EncodeBase64 = objNode.Text
Set objNode = Nothing
Set objXML = Nothing
End Function
|
так попробуйте | |
|
| |
|
|
|
| Ругается на Dim objXML As MSXML2.DOMDocument , говорит: User-defined type not defined
Даже закрыть приложение невозможно - только через диспетчер задач.
Я так понял, эта функция будет кодировать строку ( EncodeBase64(text As String) As String ), а мне нужно файл JPG кодировать ... | |
|
| |
|
|
|
| Подключите в references библиотеку Microsoft XML | |
|
| |
|
|
|
| Угу Ступил
Строку кодирует вроде бы:
Поле1 Выражение1
абв = 4OHi
где = 4+Tl
А как файлик JPG заплющить? | |
|
| |
|
|
|
| считать его в переменную. | |
|
| |
|
|
|
| А как!? Олег! Помогите ламеру, плз :) | |
|
| |
|
|
|
| уже забыл все, возможно как-то так
Dim intNF As Integer
Dim bytB() As Byte
intNF = FreeFile
Open "c:/Файл.jpg" For Binary Access Read As #intNF
ReDim bytB(FileLen(strFullFileName))
Get #intNF, , bytB
Close #intNF
Byte -
|
| |
|
| |
|
14 Кб. |
|
| Что-то совсем запутался и ничего не получается...
Есть таблица с полями: ХранитьКак (имя абонента), Контакт (телефон), Image (genm к файлу с фоткой JPG)
Нужно чтобы по нажатию кнопочки формировался текстовый файл такого содержания:
BEGIN:VCARD
VERSION:2.1
N;ХранитьКак
FN;ХранитьКак
TEL;CELL:Контакт
TEL;HOME:
TEL;WORK:
TEL;FAX:
PHOTO;ENCODING=BASE64;JPEG: < Закодированная фотка, находящаяся по пути Image >
END:VCARD
|
Для каждой записи в таблице - свой такой блок
Наваял во:
Function EncodeBase64(text As String) As String
Dim arrData() As Byte
arrData = StrConv(text, vbFromUnicode)
Dim objXML As MSXML2.DOMDocument
Dim objNode As MSXML2.IXMLDOMElement
Set objXML = New MSXML2.DOMDocument
Set objNode = objXML.createElement("b64")
objNode.DataType = "bin.base64"
objNode.nodeTypedValue = arrData
EncodeBase64 = objNode.text
Set objNode = Nothing
Set objXML = Nothing
End Function
Function VcfList()
Dim intNF As Integer
Dim bytB() As Byte
'Dim strFullFileName As String
Dim rs As DAO.Recordset
Dim fso As Object
Dim TextStream As Object
Dim i As Integer
Set rs = CurrentDb.OpenRecordset("çàïVCF")
rs.MoveLast: rs.MoveFirst
Set fso = CreateObject("Scripting.FileSystemObject")
Set TextStream = fso.CreateTextFile(CurrentProject.Path & "\List.vcf")
For i = 1 To rs.RecordCount
TextStream.WriteLine "BEGIN:VCARD"
TextStream.WriteLine "VERSION:2.1"
TextStream.WriteLine "N;" & rs.Fields("ХранитьКак")
TextStream.WriteLine "FN;" & rs.Fields("ХранитьКак")
TextStream.WriteLine "TEL;CELL:" & rs.Fields("Контакт")
TextStream.WriteLine "TEL;HOME:"
TextStream.WriteLine "TEL;WORK:"
TextStream.WriteLine "TEL;FAX:"
intNF = FreeFile
Open ("Image") For Binary Access Read As #intNF
ReDim bytB(FileLen("Image"))
Get #intNF, , bytB
Close #intNF
TextStream.WriteLine "PHOTO;ENCODING=BASE64;JPEG:" & EncodeBase64(bytB)
TextStream.WriteLine "END:VCARD"
TextStream.WriteBlankLines 2
If i < rs.RecordCount Then rs.MoveNext
Next i
TextStream.Close
Set TextStream = Nothing
Set fso = Nothing
Set rs = Nothing
MsgBox "Готово!"
End Function
|
Ниработаит :( | |
|
| |
|
|
|
| Open ("Image") - это кто?
как не работает? что говорит? | |
|
| |
|
|
|
| Open ("Image") - Image поле таблицы, в котором прописан путь к файлу JPG
Ругается вот так: ByRef argument type mismatch
на: bytB
в строке: TextStream.WriteLine "PHOTO;ENCODING=BASE64;JPEG:" & EncodeBase64(bytB) | |
|
| |
|
|
|
| Ну обращение к полю таблицы не корректно.
и нужно массив перед передачей преобразовать в строку. Перебором элементов и соединением их между собой "&" | |
|
| |
|
|
|
| А как обратиться правильно? По уставу :)
Перебором элементов ниасилил, сделал так:
TextStream.WriteLine "PHOTO;ENCODING=BASE64;JPEG:" & EncodeBase64(StrConv(bytB, 64))
|
Ничего не ругается, файл создается, но получается:
PHOTO;ENCODING=BASE64;JPEG:
|
и все... Явно не то :( | |
|
| |
|
|
|
| поскольку я не знаю что там у вас как, то сказать как "правильно" обратиться к полю в котором хранится путь к картинке, я не могу.
Для начала, замените
Open ("Image") ...... на
Open("Здесь Реальный путь к реальной картинке") ....
Например:
Open("C:\image1.jpg") ....
и посмотрите что получится | |
|
| |