powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как правильно сохранить бинарный файл?
7 сообщений из 7, страница 1 из 1
Как правильно сохранить бинарный файл?
    #39987566
melihron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, коллеги.
Не могу байт в байт сохранить файл.

при таком сохранении теряются первые 2 символа:
Код: vbnet
1.
2.
3.
  Open savePath For Binary Access Write As #1
  Put #1, , rs(0).Value
  Close #1


а при таком добавляет в конец 2 символа #0D #0A
Код: vbnet
1.
2.
3.
  Open savePath For Output As #2
  Print #2, rs(0).Value
  Close #2


Чё за хрень, как победить ?
Сохранить пытаюсь xlsx-файл размером в пару мегабайт, отданный процедурой на sql-сервере.
...
Рейтинг: 0 / 0
Как правильно сохранить бинарный файл?
    #39987588
Прогер_самоучка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
melihron
а при таком добавляет в конец 2 символа #0D #0A
Код: vbnet
1.
2.
3.
  Open savePath For Output As #2
  Print #2, rs(0).Value
  Close #2

ну таки управляющие символы :)
...
Рейтинг: 0 / 0
Как правильно сохранить бинарный файл?
    #39987675
Swa111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
melihron,

Код: vbnet
1.
2.
3.
4.
set ObjFSO = WScript.CreateObject("Scripting.FileSystemObject")
set f1 = ObjFSO.openTextFile("file.xlsx", 2, true)
f1.write xlsxContent
f1.close
...
Рейтинг: 0 / 0
Как правильно сохранить бинарный файл?
    #39987713
ЦЦа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
melihron,

хрень побеждаеЦЦа, как ни удивительно, через RTFM по Open Statement и Put Statement.
Примерный код:
Код: vbnet
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.
Public Sub ExportBLOB(ByVal Id As Long, Optional ByVal Path As String)
 Dim rs As DAO.Recordset
 Dim Buffer() As Byte
 Dim nFile As Integer
 Set rs = CurrentDb.OpenRecordset("T_BLOBs", DAO.dbOpenDynaset)
 rs.FindFirst "Id=" & Id
 If Not rs.NoMatch Then
    Path = Trim$(Path)
    If Len(Path) = 0 Then
       Path = Left$(CurrentDb.Name, InStrRev(CurrentDb.Name, "\"))
    ElseIf InStr("\:", Right$(Path, 1)) = 0 Then
       Path = Path & "\"
    End If
    Path = Path & rs("FileName")
    nFile = FreeFile()
    Open Path For Output Access Write Lock Write As #nFile 'обнуление размера
    Close #nFile                                           'файла
    Open Path For Binary Access Write Lock Write As #nFile
    Buffer = rs("BinData")
    Put #nFile, , Buffer
    Close #nFile
    Erase Buffer
 End If
 Set rs = Nothing
End Sub
...
Рейтинг: 0 / 0
Как правильно сохранить бинарный файл?
    #39987715
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
melihron
Добрый день, коллеги.
Не могу байт в байт сохранить файл.

при таком сохранении теряются первые 2 символа:
[src VB]
Open savePath For Binary Access Write As #1
Put #1, , rs(0).Value
Close #1

Чё за хрень, как победить ?


Если они "теряются" - надо тупо добавить два лишних.
И фсе.
...
Рейтинг: 0 / 0
Как правильно сохранить бинарный файл?
    #39987948
melihron

при таком сохранении теряются первые 2 символа:
Код: vbnet
1.
2.
3.
  Open savePath For Binary Access Write As #1
  Put #1, , rs(0).Value
  Close #1

Странно... Какой тип поля? Попробуйте сначала присвоить значение байтовому массиву, а затем массив записать в файл. Если опять будут теряться символы - убедитесь, что они есть в массиве.

ЗЫ. Более современный способ записи в бинарный (и не только) файл - ADODB.Stream
...
Рейтинг: 0 / 0
Как правильно сохранить бинарный файл?
    #39988007
melihron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо, кто откликнулся.. помогло сначала присвоить строковой переменной:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
  Dim s As String  
'---------------------------------
' тут вызываем процедуру на sql-сервере и принимаем от неё содержимое файла в rs(0) (ado)
'---------------------------------
      s = rs(0).Value ' копируем всё тело файла в строковую переменную

      Open savePath For Binary Access Write As #1
      Put #1, , s
      Close #1


если вместо строки использовать байтовый массив, как все советуют, то объём файла увеличивается в 2 раза - к каждому символу добавляется #00 ... хз почему

to Кривцов Анатолий:
тип данных rs(0) получается автоматом Variant/Object/Field
про ADODB.Stream интересно, спасибо, поразбираюсь на досуге.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Как правильно сохранить бинарный файл?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]