Вставка изображения в столбец SQL Server типа VARBINARY (MAX) с помощью Powershell - PullRequest
0 голосов
/ 24 октября 2018

Я застрял.Я пытаюсь вставить изображение с моего жесткого диска в столбец SQL Server типа VARBINARY(MAX).Я превращаю это во что-то, но я даже не уверен, что это такое.То, что получается, выглядит как «81 69 20 0 81 69 20 0 81 69 20 0 81 69 20 0 81 69 20 0 81 69 20 0 81», но гораздо дольше.В моей команде update, если я заменю $ file на 01234, который обновляется без каких-либо проблем, так что я почти уверен, что это вопрос преобразования его в правильный формат, какой бы он ни был.

$i = 1
$shape|foreach{
if ($shape.Item($i).name.Substring(0, 7) -eq 'Picture')
    {
        #write-host $shape.Item($i).name
        $shape.Item($i).copy()

        #write-host $firstChart.name
        $firstChart.paste()
        $firstChart.Export("c:\temp\pictures\image1.jpg", "JPG")
        #$firstChart.Delete

        [Byte[]]$file = get-content -Encoding Byte C:\TEMP\pictures\image1.jpg

        #$file = [convert]::ToBase64String((get-content C:\TEMP\pictures\image1.jpg -encoding byte))

        $cmd.CommandText ="UPDATE QuoteData SET PII_Image1 = $file Where QuoteNumber =  '"+$WorkSheet.Range('G7').Text.replace("'","''")+"'"
        $cmd.ExecuteNonQuery()
    }
    $i++
}

1 Ответ

0 голосов
/ 25 октября 2018

Ваш байтовый массив необходимо преобразовать в шестнадцатеричное представление.Обратите внимание, что строка $ hexString была добавлена, а текст $ cmd.CommandText был изменен.

    [Byte[]]$file = get-content -Encoding Byte C:\TEMP\pictures\image1.jpg
    $hexString = ($file|ForEach-Object ToString X2) -join ''
    $hexString = '0x'+$hexString 

    $cmd.CommandText ="UPDATE QuoteData SET PII_Image1 = $hexString Where QuoteNumber =  '"+$WorkSheet.Range('G7').Text.replace("'","''")+"'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...