PDA

View Full Version : چطوری فایل آپلود رو توی بانک بریزم



maisam57
سه شنبه 21 اسفند 1386, 07:56 صبح
سلام
سی شارپ کارمیکنم و دیتابیسم اراکل هست از کامپوننت fileupload برای ذخیره فایلهای pdfو doc توی دیتابیس استفاده کردم ولی نمیدونم چطوری کاری کنم که وقتی کاربر از روی سیستمش فیالی رو اپلود کرد توی فیلد blob ذخیره کنم
هرچی سرچ کردم دوستان فقط در مورد اپلود و ذخیره برروی هارد بحث کرده بودم
لطفا راهنمایی بفرمایید

maisam57
سه شنبه 21 اسفند 1386, 10:56 صبح
من میخوام با استفاده از fileupload کاربر از روی سیستمش یک فایل doc یا pdf رو browse کنه بعد همون فایل رو توی فیلد blob بریزم
باتشکر فراوان

مهدی کرامتی
سه شنبه 21 اسفند 1386, 15:02 عصر
کامپوننت FileUpload یک مشخصه بنام PostedFile.InputStream دارد که از طریق آن می توانید فایل آپلود شده را بصورت یک Stream بخوانید و در فیلد Blob مورد نظر ذخیره کنید.

maisam57
چهارشنبه 22 اسفند 1386, 13:10 عصر
اینو میدونم و میتونم فایل را بصورت stream دربیارم ولی نمیتونم توی دیتابیس بریزم

hamedgh
چهارشنبه 22 اسفند 1386, 14:30 عصر
شما در مورد نحوه ذخیره Stream در بانک سرچ کنی زود تر به نتیجه می رسی
در همین فروم خیلی کد هست

maisam57
دوشنبه 27 اسفند 1386, 13:18 عصر
سرچ کردم خیلی چیزا دستگیرم شد میخواستم سوال کنم که همین کدهایی رو که بجه ها برای ذخیره عکس توی بانکاستفاده کردن من هم میتونم برای ذخیره doc و pdf استفاده کنم بطور کل بگم که میخوام کاربر با بتونه فایلهایی با سایز حداکثر ا مگابایت رو از نوع word و acrobat آپلود کنه و برنامه اینفایل رو بریزه توی فیلدی از نوع blob
با تشکر

hamedgh
دوشنبه 27 اسفند 1386, 16:47 عصر
اکر فایلی ر ابتوانی به بایت تبدیل کنی مشکلت حل می شود فرقی نمی کند که چی باشد

Loutish
دوشنبه 27 اسفند 1386, 23:40 عصر
حالا که شما قادر به ذخیره استریم نیستی بیا به قول دوستون حامد بایتش کن ولی من پیشنهاد می دم بیس 64 کنی بعد به صورت یه text معمولی بریزی تو بانک.



Dim save As String
save = Convert.ToBase64String(FileUpload1.FileBytes)

save رو بده به بانک.

maisam57
سه شنبه 28 اسفند 1386, 14:17 عصر
اقا مشکل من حل نشد منکد زیر رو برای ذخیره فایلهای PDF نوشتم


FileStream save = new FileStream(Server.MapPath("pdf\\crystal.pdf"), FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(save);
byte[] filesave = reader.ReadBytes((int)save.Length);
reader.Close();
save.Close();
command = new OracleCommand();
command.Connection = cn;
command.CommandText = "insert into pishnehad(id,datesabt,subject,attach)"+
" values(seq.nextval,'"+TextBox2.Text+"','"+TextBox3.Text+"',@attach)";
command.Parameters.Add("@attach",OracleType.Byte,filesave.Length).Value=filesave;
command.ExecuteNonQuery();
cn.Close();

ولی دکمه save روکه بزنم پیغام زیر رو میده
Failed to convert parameter value from a Byte[] to a Byte

maisam57
سه شنبه 28 اسفند 1386, 15:42 عصر
کد رو تغییر دادم با این حال error زیر رو میده خدایش کد زیر ایراد داره


FileStream save = new FileStream(Server.MapPath("pdf\\crystal.pdf"), FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(save);
byte[] filesave = reader.ReadBytes((int)save.Length);
reader.Close();
save.Close();
command = new OracleCommand();
command.Connection = cn;
command.CommandText = "insert into sa.pishnehad(id,datesabt,subject,attach1)"+
" values(seq.nextval,'"+ TextBox2.Text +"','"+ TextBox3.Text +"',@attach123)";
command.Parameters.Add("@attach123",OracleType.Blob ,filesave.Length).Value=filesave;
command.ExecuteNonQuery();
cn.Close();

maisam57
سه شنبه 28 اسفند 1386, 15:43 عصر
یادم رفت error رو بنویسم
illegal variable name/numbe

maisam57
دوشنبه 05 فروردین 1387, 14:04 عصر
دوستان اگه ممکنه سوالمو جواب بدن خیلی بهش احتیاج دارم

meysam_12001
دوشنبه 05 فروردین 1387, 14:56 عصر
اول سایز فایلی رو که کاربر انتخاب کرده رو بدست میاریم

Dim Filesize1 = Fileupload.PostedFile.ContentLength
بعد یک متغیر از نوع Stream و یک متغیر از نوع بایت به سایز فایلی که کاربر انتخاب کرده درست می کنیم


Dim Filestream1 As Stream
Dim Filecontent(Filesize1) AsByte
فایلی رو که کاربر انتخاب کرده رو Stream میکنیم

Filestream1 = FileUpload1.PostedFile.InputStream
مقدار Stream شده رو تبدیل به بایت میکنیم . این مقدار بایت شده در Filecontent قرار میگیرد


Filestream1.Read(Filecontent, 0, Filesize1)

حالا این Filecontent رو تو دیتابیس ذخیره کن

command.Parameters.Add("@attach123",OracleType.Blob ,Filesize1).Value=Filecontent

maisam57
چهارشنبه 07 فروردین 1387, 10:16 صبح
protected void Button2_Click(object sender, EventArgs e)
{
FileStream save = new FileStream(Server.MapPath("pdf\\crystal.pdf"), FileMode.Open, FileAccess.Read);
BinaryReader reader = new BinaryReader(save);
byte[] filesave = reader.ReadBytes((int)save.Length);
reader.Close();
save.Close();
command = new OracleCommand();
command.Connection = cn;
command.CommandText = "INSERT INTO FILETEST(MYFILE) values(@MYFILE)";
command.Parameters.Add("@MYFILE", OracleType.Blob, filesave.Length).Value = filesave;
command.ExecuteNonQuery();
cn.Close();
}


آقا کد این دوست ما نتونست کمکم کنه ولی خدایش شما توی این کد بالا مشکلی میبینید من هرچی سعی میکنم مدام error
illegal variable name/numbe رو میده هرچی اسم متغیر و فیلد و table رو تغییر میدم هیچ فرقی نمیکنه شما راهنمایی بفرمائید