PDA

View Full Version : تشخیص فرمت فایل ذخیره شده به صورت باینری در دیتابیس



Afrazeh
دوشنبه 14 آبان 1386, 11:14 صبح
در دیتابیس SQL که من دارم یکی از فیلدها از نوع باینری تعریف شده، برای بازیابی اطلاعات این فیلد از کد زیر استفاده کردم ولی چون نوع فایل ذخیره شده رو نمی دونم Error Invalid Casttype میده. با پسوندهای txt, doc,jpg هم تست کردم ولی جواب نداد. راه حلی برای تشخیص فرمت فایل ذخیره شده به صورت باینری وجود داره؟

m:= TMemoryStream.Create;
TBlobField(ADOQuery1.FieldByName('content')).SaveT oStream(m);
m.savetofile('d:\temp\me.pdf');

vcldeveloper
دوشنبه 14 آبان 1386, 12:12 عصر
در هنگام ذخیره داده های فیلد BLOB در فایل اصلا مهم نیست که پسوند فایل شما چی باشه. محتوی فیلد یکسری کد باینری است که در هر فایلی میشه آن را قرار داد. نوع داده زمانی مطرح می شود که بخواهید فایل ایجاد شده را باز کنید، در آن صورت باید نوع داده موجود در فایل با پسوند آن همخوانی داشته باشد تا برنامه ایی که باید فایل را نمایش دهد دچار مشکل نشود، مثلا نمیشه انتظار داشت که داده های یک فیلد JPEG که در یک فایل MP3 ذخیره شده است، با Winamp باز شود.
پس اگر شما در زمان ذخیره فیلد در فایل پیغام خطا می گیرید، مشکل از نوع داده باینری ذخیره شده در فایل نیست.
در ضمن، راه مشخصی برای تشخیص فرمت داده باینری موجود در فیلد نیست. یا باید داده های باینری را برای وجود الگوهای خاصی که در بعضی از فرمت ها استفاده می شود، اسکن کنید (که روش وقت گیر و پیچیده ایی هست)، یا باید به هنگام ذخیره داده ها، در فیلد دیگری فرمت داده را هم ذخیره کنید.

Afrazeh
دوشنبه 14 آبان 1386, 18:46 عصر
از توضیحتون ممنونم.
در ادامه توضیحی که دادین: ممکنه اطلاعاتی که در یک فیلد باینری ذخیره شده، فایل نباشه؟ و یا اینکه از روشی به غیر از Tblobfield برای ذخیره کردن اطلاعات در فیلد باینری استفاده شده باشه؟ آخه من در مورد نحوه ذخیره سازی و اطلاعات ذخیره شده در این فیلد باینری اطلاعی ندارم ولی باید محتویات اون رو بازیابی کنم. چه روشهایی رو می تونم تست کنم؟

ghabil
دوشنبه 14 آبان 1386, 23:05 عصر
ببین اطلاعاتی که توی یک فیلد باینری ذخیره شده یکسری اطلاعات باینری هست ، حالا شما میتونید هر نوع اطلاعاتی به طور جداگانه با یک نام بصورت فیزیکی در هارد دیسکتون ذخیره کنید تا بشه یک فایل.
این که اطلاعات به چه روشی ذخیره شدند هم مهم نیست تا زمانیکه قبل از ذخیره پروسس خای روشون انجام نشده باشه ، مثلا بعضیها قبل از ذخیره اطلاعات رو زیپ میکنند یا کد میکنند ، اما به هر حال این اطلاعات به شکل باینری در دیتابیس هستند شما میتونید این اطلاعاا رو بگیرید و در قالب یک فایل ذخیره کنید ، اما اینکه محتویات اون فایل چی میشه دیگه بر میگرده به اطلاعاتی کخ ذحیره شده اند.