Varbinary (max) к изображению Throws System.argumentException: «Параметр недопустим».C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Varbinary (max) к изображению Throws System.argumentException: «Параметр недопустим».

Сообщение Anonymous »

Я сталкиваюсь с проблемой при попытке прочитать из MSSQL DB varbinary (max) и сохранить ее в файл изображения.
DB в MSSQL - это после миграции из доступа DB с использованием SSMA Tool.ff studio Sql Я могу видеть, что данные в столбце: 0x151c1c1c1c503 ...... . PRE -код> PRE -код>. /> Таким образом, используя используемую структуру Entity для получения значения столбца в Byte []. < /p>
Тогда я использую память с байтом [], а затем, как вы можете видеть в коде, я пытаюсь установить переменную изображения = изображение. FromStream (byte []), который вызывает систему. Поиск на несколько часов. Я пробовал все, что я нашел в Интернете, например, конвертируйте в строку Base64, а затем вернулся в Byte [], затем в MemoryStream, но я получаю такую ​​же ошибку. Многие люди спрашивали его, а некоторые никогда не нашли решение или если не найдены, или предоставленные решения для меня не будут работать. Код, который дает ошибку: < /p>
var i=(context.Mans.Where(a => a.Code == 111).Select(a => a.FOTO).Single().ToArray());
using (var ms = new MemoryStream(i))
{
ms.Position = 0;
ms.Seek(0, SeekOrigin.Begin);
Image foto = Image.FromStream(ms);
foto.Save($"{Application.StartupPath}\\foto.jpg");
}
< /code>
Я также пытался получить данные из столбца FOTO через SQLConnection, но все еще не повезло. < /p>
Я обнаружил, что я должен конвертировать байт [] в Hexstring, а затем Hexstring в другой байт [] и сделал, используя код ниже, который я нашел в Интернете, но все же я не мог заставить его работать. public static string ByteArrayToString(byte[] ba)
{
StringBuilder hex = new StringBuilder(ba.Length * 2);
foreach (byte b in ba)
hex.AppendFormat("{0:x2}", b);
return hex.ToString();
}
public static byte[] ConvertHexStringToByteArray(string hexString)
{
if (hexString.Length % 2 != 0)
{
throw new ArgumentException(String.Format(CultureInfo.InvariantCulture, "The binary key cannot have an odd number of digits: {0}", hexString));
}

byte[] HexAsBytes = new byte[hexString.Length / 2];
for (int index = 0; index < HexAsBytes.Length; index++)
{
string byteValue = hexString.Substring(index * 2, 2);
HexAsBytes[index] = byte.Parse(byteValue, NumberStyles.HexNumber, CultureInfo.InvariantCulture);
}

return HexAsBytes;
}


Подробнее здесь: https://stackoverflow.com/questions/796 ... -not-valid
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Varbinary (max) к изображению Throws System.argumentException: «Параметр недопустим».
    Anonymous » » в форуме C#
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Varbinary (max) к изображению Throws System.argumentException: «Параметр недопустим».
    Anonymous » » в форуме C#
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Varbinary (max) к изображению Throws System.argumentException: «Параметр недопустим».
    Anonymous » » в форуме C#
    0 Ответы
    5 Просмотры
    Последнее сообщение Anonymous
  • Varbinary (max) к изображению Throws System.argumentException: «Параметр недопустим».
    Anonymous » » в форуме C#
    0 Ответы
    4 Просмотры
    Последнее сообщение Anonymous
  • System.ArgumentException: параметр типа таблицы должен иметь допустимое имя типа.
    Anonymous » » в форуме C#
    0 Ответы
    83 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»