Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/34: Рейтинг темы: голосов - 34, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 05.08.2018
Сообщений: 110

Каким образом можно сохранить Word файл в MySql?

16.03.2019, 23:29. Показов 6701. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Дорогие товарищи! Устал рыть интернет.

Подскажите, каким образом можно сохранить Word файл в MySql? А так же вернуть его обратно из базы?

Есть какой-нибудь способ залить его напрямую или нужно открывать считывать и отправлять в БД?

Нужно учесть, что должно остаться исходное форматирование, так как этот файл будет использоваться как шаблон.

Желательно с конкретным примером кода если не трудно.

Заранее благодарен.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.03.2019, 23:29
Ответы с готовыми решениями:

Каким образом можно очистить событие?
Доброго времени суток. Каким образом можно очистить событие public event EventHandler Click; public void Clear() { ...

Каким образом можно нормализовать double?
Вместо этого непонятного набора знаков должно быть число от -1 до +1 ( если учитывать минимальную ошибку) В идеале это естественно - 0.

Каким образом можно прикрепить штриховку к объекту
В задаче про вращающийся кубик, вокруг произвольной точки пространства. Необходимо по разному заштриховать грани куба, так чтобы при...

10
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18262 / 14187 / 5366
Регистрация: 17.03.2014
Сообщений: 28,872
Записей в блоге: 1
17.03.2019, 00:33
Лучший ответ Сообщение было отмечено Usaga как решение

Решение

SatanInside, сохраняем как массив байтов (колонка типа varbinary) и так же читаем. Собственно данный подход можно использовать для любых файлов.
0
0 / 0 / 0
Регистрация: 05.08.2018
Сообщений: 110
17.03.2019, 09:55  [ТС]
Каким кодом это можно сделать?

Пробовал это

C#
1
2
3
FileStream f = new FileStream(Directory.GetCurrentDirectory() + @"\TMPLS\Test.docx", FileMode.Open);
            BinaryReader br = new BinaryReader(f);
            byte ride = br.ReadByte();
вот это

C#
1
2
3
4
5
6
7
8
9
10
11
FileStream stream = new FileStream(Directory.GetCurrentDirectory() + @"\TMPLS\Test.docx", FileMode.Open, FileAccess.Read);
 
            int leng = (int)stream.Length;
 
            byte[] bufer = new byte[stream.Length];
 
            stream.Read(bufer, 0, leng);
 
            ASCIIEncoding ascii = new ASCIIEncoding();
 
            string res = ascii.GetString(bufer, 0, leng);
вот это

C#
1
2
3
4
5
6
7
8
9
10
using (FileStream fstream = File.OpenRead(@Directory.GetCurrentDirectory() + @"\TMPLS\Test.docx"))
            {
                // преобразуем строку в байты
                byte[] array = new byte[fstream.Length];
                // считываем данные
                fstream.Read(array, 0, array.Length);
                // декодируем байты в строку
                string textFromFile = System.Text.Encoding.Default.GetString(array);
                richTextBox1.Text = textFromFile;
            }

и даль по списку. в базу залетает только 13 байт, а должно быть 20 КБ!
0
Эксперт .NET
 Аватар для Usaga
14127 / 9347 / 1350
Регистрация: 21.01.2016
Сообщений: 35,125
17.03.2019, 12:42
SatanInside, а где код записи в базу?

И что это за дичь?
Цитата Сообщение от SatanInside Посмотреть сообщение
C#
1
2
// декодируем байты в строку
 string textFromFile = System.Text.Encoding.Default.GetString(array);
0
0 / 0 / 0
Регистрация: 05.08.2018
Сообщений: 110
17.03.2019, 13:42  [ТС]
Напишите, пожалуйста, пример кода. Я второй день пытаюсь разобраться с это проблемой, и без успешно.
0
Эксперт .NET
 Аватар для Usaga
14127 / 9347 / 1350
Регистрация: 21.01.2016
Сообщений: 35,125
17.03.2019, 14:01
SatanInside, примеры работы с ADO.NET можно посмотреть тут. Подключение к MySQL из ADO.NET описано тут. Как документ загрузить разберётесь.
0
0 / 0 / 0
Регистрация: 05.08.2018
Сообщений: 110
17.03.2019, 14:20  [ТС]
Usaga, до mysql мне как до Китая раком. Мне сначала нужно понять как считать содержимое .docx файла, так как это не обычный текстовый файл, что бы потом это содержимое записать в БД. Из ранее приведённых мною пример видно на какой стадии я застрял. Зачем вы даёте мне ссылки на инструкции по работе с БД? С этим у меня проблем нет. Они мне сейчас совершенно ни к чему. Я пробовал разные варианты чтения из файла .docx но ничего не получается. Вот последний из них:

C#
1
2
3
4
5
6
7
8
9
10
11
string path = Directory.GetCurrentDirectory() + "\\test.docx";
            string bufer = "";
            using (FileStream fs = File.OpenRead(path))
            {
                byte[] fileData = new byte[fs.Length];
                fs.Read(fileData, 0, (int)fs.Length);
                for (int i = 0; i < fs.Length; i++)
                {
                    bufer = bufer + fileData[i].ToString();
                }
            }
При чтении содержимого файла test.docx общий объём данных составляет 28КБ, хотя сам файл весит 13КБ. При попытке сразу же записать содержимое в новый файл этого же формата, документ вообще перестаёт открываться. Word говорит, что файл испорчен.
0
Эксперт .NET
 Аватар для Usaga
14127 / 9347 / 1350
Регистрация: 21.01.2016
Сообщений: 35,125
17.03.2019, 14:25
SatanInside, это потому, что вы что попало делаете. Читайте документ как массив байт. И в базу сохраняйте в поле BLOB. Не надо документ представлять строкой текста. Это не строка текста никаким боком.
0
0 / 0 / 0
Регистрация: 05.08.2018
Сообщений: 110
17.03.2019, 15:10  [ТС]
Ok, с чтением в побайтово разобрался:

C#
1
2
3
4
5
byte[] result = null;
            FileStream fileStream = File.OpenRead(Directory.GetCurrentDirectory() + @"\TMPLS\Test.docx");
            BinaryReader binaryReader = new BinaryReader(fileStream);
            int count = (int)fileStream.Length;
            result = binaryReader.ReadBytes(count);
Теперь мне нужно вставить это в базу данных. Вставляю вот так:

C#
1
2
command.CommandText = "INSERT INTO templates (templates_Name, templates_Content) VALUES ('TEST.docx', '" + result + "')";
            int numberOfUpdatedItems = command.ExecuteNonQuery();
В итоге, в ячейку залетает только 13Байт, а должно быть 13КБ. В таблице стоит varbinary(15000).
Что делаю не так?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18262 / 14187 / 5366
Регистрация: 17.03.2014
Сообщений: 28,872
Записей в блоге: 1
17.03.2019, 15:50
Лучший ответ Сообщение было отмечено Usaga как решение

Решение

Цитата Сообщение от SatanInside Посмотреть сообщение
C#
1
"VALUES ('TEST.docx', '" + result + "')"
В итоге, в ячейку залетает только 13Байт
Ну ты блин даешь. У массива не перегружен ToString() и значит сработает object.ToString() который вернет строку System.Byte[] - те самые 13 байт. Нужно делать так:
C#
1
2
3
command.CommandText = "INSERT INTO templates (templates_Name, templates_Content) VALUES ('TEST.docx', @Content)";
command.Parameters.AddWithValue("@Content", result);
int numberOfUpdatedItems = command.ExecuteNonQuery();
И, кстати, содержимое файла можно прочитать одной строкой
C#
1
byte[] result = File.ReadAllBytes(Directory.GetCurrentDirectory() + @"\TMPLS\Test.docx"));
1
0 / 0 / 0
Регистрация: 05.08.2018
Сообщений: 110
19.03.2019, 00:25  [ТС]
Спасибо большое! Всё работает, разобрался.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.03.2019, 00:25
Помогаю со студенческими работами здесь

Каким образом можно программно проверить и получить почту
Не подскажите каким образом можно программно проверить и получить почту? Искал, но негде не нашёл ( везде только отправка, а мне нужно...

Каким образом можно снять ограничение в 50 смс на mail.ru
Здравствуйте. Подскажите каким образом можно снять ограничение в 50 смс на mail.ru. Сам отправщик смсок я уже сделал, но мне не нравится...

Каким образом можно получить содержание СМС с телефона?
Каким образом можно получить содержание СМСки с телефона? Оператор мтс, телефон на андроиде, получать хочу в программу на c#

Каким образом можно расшифровать пароль от wifi точки?
Доброго времени суток. Кто-нибудь сталкивался с такой проблемой. Каким образом можно расшифровать на c# пароль от wifi точки. keyMaterial -...

Каким образом можно программно перегнать картинку bmp в pdf
Подскажите, пожалуйста, каким-то образом можно программно перегнать картинку bmp в pdf? и если да, то каким?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru