Сохранить локальный файл из MS SQL varbinary - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь сохранить локальный документ, хранящийся в SQL db, с помощью UiPath. Из действия execute query он возвращает значение DataTable с одним столбцом («Данные»).

Если я не ошибаюсь, мне нужно преобразовать DataTable.rows(0)(“Data”) (студия интерпретирует его как object) в массив байтов.

Я использовал код вызова, но файл не работает:

Dim _MemoryStream As New System.IO.MemoryStream()
Dim _BinaryFormatter As New System.Runtime.Serialization.Formatters.Binary.BinaryFormatter()
_BinaryFormatter.Serialize(_MemoryStream, inputObj)
_MemoryStream.ToArray()

File.WriteAllBytes(“C:\Users\Desktop\test.tiff”, _MemoryStream.ToArray())

1 Ответ

0 голосов
/ 29 мая 2020

Если вы не сериализовали объект при сохранении, в чем я сомневаюсь, нет причин пытаться десериализовать объект при извлечении. Каждое поле из DataRow возвращается как Object ссылка, потому что оно должно поддерживать любой тип объекта, но этот объект по-прежнему имеет свой собственный тип. Если вы сохранили двоичные данные, то этот тип будет Byte(), то есть массив Byte. Похоже, что File.WriteAllBytes принимает массив Byte:

File.WriteAllBytes(“C:\Users\Desktop\test.tiff”, DirectCast(inputObj, Byte()))

Это то, что я ожидал от вас. Это зависит от того, как вы сохранили данные в первую очередь, но если вы использовали File.ReadAllBytes или Image.Save, тогда это должно сработать. Если нет, покажите нам, как вы в первую очередь сбрасывали данные.

...