【发布时间】:2021-12-24 14:19:48
【问题描述】:
private void Button_Foto_Click(object sender, RoutedEventArgs e)
{
OpenFileDialog openFile = new OpenFileDialog();// создаем диалоговое окно
openFile.ShowDialog();// открываем окно
string FileName = openFile.FileName;// берем полный адрес картинки
imgPath = openFile.FileName; // записываем в переменную путь к изображению
textBoxImg.Text = FileName; // выводим в текстовом поле путь к изображению (для наглядности)
//InitVariable();
if (textBoxImg.Text == "") // если не указан путь к изображению, то...
return; // прекратить выполнение
// Конвертируем изображение в байты byte[]
byte[] _imageBytes = null;
FileInfo _imgInfo = new FileInfo(imgPath); // загрузим изображение
long _numBytes = _imgInfo.Length; // вычислим длину
FileStream _fileStream = new FileStream(imgPath, FileMode.Open, FileAccess.Read); // откроем изображение на чтение
BinaryReader _binReader = new BinaryReader(_fileStream);
_imageBytes = _binReader.ReadBytes((int)_numBytes); // изображение в байтах
imgFormat = Path.GetExtension(imgPath).Replace(".", "").ToLower(); // запишем в переменную расширение изображения в нижнем регистре, не забыв удалить (Replace) точку перед расширением
imgName = Path.GetFileName(openFile.FileName).Replace(Path.GetExtension(imgPath), ""); // запишем в переменную имя файла, не забыв удалить (Replace) расширение с точкой
// записываем информацию в базу данных
using (SQLiteConnection Connect = new SQLiteConnection("Data Source=" + dbPath + ";Version=3;"))
{
string commandText = "INSERT INTO " + db.AppStaffs + " ([image], [image_format], [image_name]) VALUES(@image, @format, @name)";
SQLiteCommand Command = new SQLiteCommand(commandText, Connect);
Command.Parameters.AddWithValue("@image", _imageBytes);
Command.Parameters.AddWithValue("@format", imgFormat);
Command.Parameters.AddWithValue("@name", imgName);
MessageBox.Show("Изображение добавлено в базу данных");
}
}
目前我正在使用代码将图像上传到数据库,但它没有加载,它通过单击按钮并从对话框中选择来加载,我选择,上传,给出一个消息,一切都是很好,是否可以在不拆分为数组的情况下保存图像,是否可以在不拆分为数组的情况下简化代码?使用单个变量输出和加载
【问题讨论】:
-
您创建了一个
SQLiteCommand,但从不执行它。此外,您为读取文件并将其存储在_imageBytes中所做的一切都可以替换为_imageBytes = File.ReadAllBytes(imgPath);
标签: c# .net sqlite file-upload sqlite-net