Я создаю некоторое настольное приложение C#, и я должен сохранить файл в базу данных. Я придумал некоторого того, кто выбирает файла, которые дают мне правильный путь файла. Теперь у меня есть вопрос, как сохранить тот файл в базу данных при помощи его пути.
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
int numBytes = new FileInfo(fileName).Length;
byte[] buff = br.ReadBytes(numBytes);
Тогда вы загружаете его в дБ, как все, что-то еще, я предполагаю, что вы используете варбинарный столбец (BLOB)
Это действительно зависит от типа и размера файла. Если это текстовый файл, то вы можете использовать file.readalltext ()
, чтобы получить строку, которую вы можете сохранить в вашей базе данных.
Если это не текстовый файл, то вы можете использовать file.readallytes ()
, чтобы получить двоичные данные файла, а затем сохранить это в вашу базу данных.
Быть осторожно быть осторожным, базы данных не являются отличным способом хранения тяжелых файлов (вы столкнетесь с некоторыми вопросами производительности).
Так будет так, чтобы FileStream будет оно, но с тех пор, как вы используете SQL 2K5, вам придется сделать это прочитанным способом памяти; который потребляет много ресурсов.
Сначала типа столбца Varchar (Max) - ваш друг, это дает вам ~ 2 ГБ данных для игры, что довольно больше всего для большинства применений.
Далее прочитайте данные в байтовом массиве и преобразуйте его в Base64String
FileInfo _fileInfo = new FileInfo(openFileDialog1.FileName);
if (_fileInfo.Length < 2147483647) //2147483647 - is the max size of the data 1.9gb
{
byte[] _fileData = new byte[_fileInfo.Length];
_fileInfo.OpenRead().Read(_fileData, 0, (int)_fileInfo.Length);
string _data = Convert.ToBase64String(_fileData);
}
else
{
MessageBox.Show("File is too large for database.");
}
и обратить внимание на процесс восстановления
byte[] _fileData = Convert.FromBase64String(_data);
, вы захотите утилизировать эти строки как можно быстрее, установив их в String. Как только вы закончите использовать их!
Но если вы можете, просто обновите до 2008 года и используете FileStream.
Если вы используете SQL Server 2008, вы можете использовать FileStream (Начало работы Руководство здесь ). Пример использования этой функциональности от C # здесь .
Вам понадобится файл в байтовом массиве, а затем сохранить это в качестве поля BLOB в базе данных, возможно, с именем, которое вы хотите дать файл и тип файла.
Вы могли бы просто отменить процесс для вывода файла снова.