К сожалению, мне нужно работать в системе, где предыдущие разработчики решили, что сохранение PDF-файлов в виде больших двоичных объектов в базе данных является хорошей идеей. Мне нужно создать PDF-файлы из BLOB-объектов, и они не сохранили исходный размер файла в БД с записью.
Я использую C# для этого. Я могу установить жестко заданный размер, и да, он создает файлы, но все PDF-файлы имеют размер, заданный независимо от содержимого. Любая помощь будет принята с благодарностью. Я попытался использовать MySQL query
SELECT OCTET_LENGTH (file_content) в качестве таблицы total_size FROM, где id = '1', но размер слишком мал.
UInt32 FileSize = MySqlCon.BlobSize(message.id);
byte[] rawData;
FileStream fs;
string fileName = @"E:\Attachments\" + message.FileName;
string u = "select file_content from message where id ='" + message.id + "'";
MySqlCommand cmd = new MySqlCommand(u, MyCon);
MySqlDataReader myData;
try
{
MyCon.Open();
myData = cmd.ExecuteReader();
if (!myData.HasRows)
throw new Exception("There are no BLOBs to save");
myData.Read();
rawData = new byte[FileSize];
myData.GetBytes(myData.GetOrdinal("file_content"), 0, rawData, 0, (int)FileSize);
fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write);
fs.Write(rawData, 0, (int)FileSize);
fs.Close();
Console.WriteLine("File successfully written to disk!");
myData.Close();
MyCon.Close();
message.FilePath = fileName;
}