PDA

View Full Version : خطا در هنگام خواندن فایل از بانک اطلاعاتی



fatima81
شنبه 08 مهر 1385, 06:19 صبح
باسلام

من از کد زیر برای خواندن ونوشتن فایلهای pdf و word در DataBase sql server استفاده کردم
برای فایلهای word ، برنامه word را باز می کند ولی بجای هر کاراکتر یک مربع کوچک نمایش می دهد. وبرای فایلهای pdf پیغام خطای زیر را می دهد.
file does not begin with'%PDF-'

ممنون میشم اگه کسی بتونه مشکل منو حل کنه
,این کد مربوط به نوشتن در فایل

private int WriteToDB(string strName, string strType, ref byte[] Buffer)
{
int nFileID = 0;
// Create connection
SqlConnection dbConn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
// Create Adapter
SqlDataAdapter dbAdapt = new SqlDataAdapter("SELECT * FROM ManuScriptTable", dbConn);

// We need this to get an ID back from the database
dbAdapt.MissingSchemaAction = MissingSchemaAction.AddWithKey;

// Create and initialize CommandBuilder
SqlCommandBuilder dbCB = new SqlCommandBuilder(dbAdapt);
// Open Connection
dbConn.Open();

// New DataSet
DataSet dbSet = new DataSet();

// Populate DataSet with data
dbAdapt.Fill(dbSet, "ManuScriptTable");
// Get reference to our table
DataTable dbTable = dbSet.Tables["ManuScriptTable"];
// Create new row
DataRow dbRow = dbTable.NewRow();
// Store data in the row
dbRow["Title"] = strName;
dbRow["Size"] = Buffer.Length;
dbRow["ContentType"] = strType;
dbRow["Text"] = Buffer;
// Add row back to table
dbTable.Rows.Add(dbRow);
// Update data source
dbAdapt.Update(dbSet, "ManuScriptTable");
// Get newFileID
if( !dbRow.IsNull("ScriptNo") )
nFileID = (int)dbRow["ScriptNo"];

// Close connection
dbConn.Close();
// Return FileID
return nFileID;
}



این هم کد مربوط به خواندن فایل از DataBase


ShowTheFile(File_ID);
///////////
private void ShowTheFile(int FileID)
{
// Define SQL select statement
string SQL = "SELECT Size, Text, ContentType FROM ManuScriptTable WHERE ScriptNo = "
+ FileID.ToString();
// Create Connection object
SqlConnection dbConn = new SqlConnection(ConfigurationSettings.AppSettings["ConnectionString"]);
// Create Command Object
SqlCommand dbComm = new SqlCommand(SQL, dbConn);
// Open Connection
dbConn.Open();
// Execute command and receive DataReader
SqlDataReader dbRead = dbComm.ExecuteReader();
// Read row
dbRead.Read();
// Clear Response buffer
Response.Clear();
// Set ContentType to the ContentType of our file
Response.ContentType = (string)dbRead["ContentType"];
// Write data out of database into Output Stream
Response.OutputStream.Write((byte[])dbRead["Text"], 0, (int)dbRead["Size"]);
// Close database connection
dbConn.Close();
// End the page
Response.End();
}

once4ever
شنبه 08 مهر 1385, 12:20 عصر
یجای کار از انکدینگ درست استفاده نکردی!
وقتی آدرس فایل رو پیدا کردی مستقیما از فایل میخوی درسته؟
یه کد بنویس و از یک فایل pdf مقادیرشو بخون

fatima81
شنبه 08 مهر 1385, 12:40 عصر
با تشکر
یه کد دیده بودم که از encoding استفاده کرده بود ولی وقتی می نوشتم error میداد
ببخشید میشه بگید encoding را برای چی استفاده می کنن وطرز نوشتنش رو توضیح بدید

once4ever
شنبه 08 مهر 1385, 17:17 عصر
اطلاعات داخل یک فایل pdf با چه فرمتی ذخیره میشه؟
اینو بهش میگن encoding که شما وقتی میخوای از اون فایل بخونی باید از اون استفاده کنی
اگه کدی داری که از pdf میخونه . اینجا بذار تا مشکلش حل بشه

fatima81
شنبه 08 مهر 1385, 19:54 عصر
[quote=once4ever]اطلاعات داخل یک فایل pdf با چه فرمتی ذخیره میشه؟

معمولا متن انها انگلیسی می باشد (utf-9) ولی توی بانک اطلاعاتی از نوع image می باشند که بصورت باینری ذخیره می شوند.

من نمیدونم از Encoding توی کد چطوری استفاده کنم اگه میشه لطف کنید با مثال اونو توضیح بدید

fatima81
چهارشنبه 12 مهر 1385, 00:53 صبح
خواهش می کنم اگه کسی می تونه به من کمک کنه .من خیلی وقته این مشکلو دارم

ARA
پنج شنبه 13 مهر 1385, 11:18 صبح
نیازی به دانستن فرمت فایل نداری چون میتونی بصورت binary بخونی و بنویسی:لبخند:


برنامه زیر رو ببین

امتحانشم کردم کاملا درست کار میکنه

ARA
پنج شنبه 13 مهر 1385, 13:45 عصر
در برنامه قبلی قسمت اندازه بافر رو ثابت داده بودم درستش کردم :خجالت:
چون واسه تست بود یادم رفته بود درستش کنم
این کامله

fatima81
پنج شنبه 13 مهر 1385, 15:05 عصر
ممنون از توجهتون
این فایلهایی که گذاشته بودید rar هستند من وقتی می خوام بازکنم error میده میشه اگه براتون مقدوره zip اش رو بذارید

fatima81
جمعه 14 مهر 1385, 19:32 عصر
این فایلها با winzip باز نمی شوند . من نرم افزار rar رو ندارم
لطفا جواب منو بدید من به این کد خیلی نیاز دارم

once4ever
جمعه 14 مهر 1385, 21:17 عصر
اینم فرمت zip برنامه جناب ARA

fatima81
جمعه 14 مهر 1385, 22:16 عصر
ممنون.واقعا لطف کردید.

fatima81
شنبه 15 مهر 1385, 10:38 صبح
جناب ARA این کد برای Windows Application وبرای vs 2005 می باشد ومن با vs2003 کار می کنم اگه میتونید کد webاش رو با vs 2003 بفرستید لطفا در هر صورت جواب منو بدید

ARA
شنبه 15 مهر 1385, 11:29 صبح
شرمنده من 2003 ندارم و یک کمی هم تو وب مشکل دارم از دوستان دیگر اگه کسی میتونه به این دوستمون کمک کنه لطف کنه

once4ever
شنبه 15 مهر 1385, 13:09 عصر
@fatima
شما کد جناب ARA رو نگاه کنید و اگه مشکلی دارید بپرسید.
نکته ای که شما احتیاج دارید نحوه خواندن ( و ایجاد کردن) یک فایل pdf هست که کاملا مشخصه.
برای ذخیره pdf داخل بانک:

int byteRead;
FileStream pdfStream = null;
FileInfo inf = new FileInfo(آدرس فایل);
size = inf.Length;
byte[] readPdfBuF = new byte[size];
try
{
pdfStream = new FileStream(آدرس فایل, FileMode.Open, FileAccess.Read);
byteRead = pdfStream.Read(readPdfBuF, 0, readPdfBuF.Length);
}
catch (Exception err)
{
MessageBox.Show(err.Message);
}

(کد از برنامه ARA)
این کد در نهایت محتویات فایل داخل readPdfBuF قرار میده که فقط کافی شما این مقدار رو داخل ستونی از بانکتون بریزید!

بقیه اش مربوط به sql query میشه.
بازم اگه مشکلی بود بپرسید!

fatima81
شنبه 15 مهر 1385, 16:21 عصر
با تشکر از دوستان
once4ever
من برای نوشتن توی بانک اطلاعاتی مشکلی ندارم همانطور که توی عنوان تاپیک گفتم فقط توی خوندن اطلاعات مشکل دارم که acrobat reader این پیغام رو به من میده
file does not begin with'%PDF-'
شما قبلا گفته بودید که باید از encoding استفاده کنم اگر در این مورد کد نمونه ای دارید می تونید اونو بذارید؟
--------------------

م کریمی
یک شنبه 20 دی 1394, 13:48 عصر
با سلام
دوستان این هم پروژه منه و دقیقن موضوعش همینه فقط لطف کنید ببنید چرا برای فایل های غیر pdf جواب نمیده. عزیزان فوریه لطفن بررسیش کنید.:عصبانی++::گریه: