PDA

View Full Version : فایل های ضمیمه



hamhik
چهارشنبه 15 فروردین 1386, 10:25 صبح
با سلام
در همین سایت یک کاربر تا چند فایل می تواند ضمیمه کند؟؟؟
چون همان طور که می دونید مسیر فایل باید در یک فیلد بانک اطلاعاتی ذخیره شود تا مشخص شود که مربوط به کدام کاربر است خب امکان داره یک کاربر توی سایت 100 فایل ضمیمه کند یعنی 100 فیلد باید ایجاد کرد؟؟

Alireza_Salehi
چهارشنبه 15 فروردین 1386, 10:38 صبح
می تونی یک فیلد String داشته باشی و آدرس ها رو با کاما از هم جدا کنی ، یا می تونی یک جدول جدا داشته باشی شامل 2 ستون شماره کاربر و آدرس فایل که با جدول کاربر ارتباط داره.یه راه دیگش هم اینه که یک جدول داشته باشی که به جای این که بگه کدوم فایل مال کدوم کاربره برعکس باشه یعنی کدوم کاربر مال کدوم فایله(شبیه همون روش دوم میشه)!

روش های مختلفی هست ،

hamhik
چهارشنبه 15 فروردین 1386, 15:45 عصر
در مورد این که گفتین یک فیلد از نوع stringایجاد کنم و بین فایل های ضمیمه کاربر کاما قرار داده بشه این سوال برای من پیش اومد که مثلا فرض می شه من توی این سایت دو فایل ضمیمه دارم در انجمن یا تاپیک های مختلف که به صورت زیر
hamhik a.rar,b.rar


حالا این فایل های ضمیمه باید در گرید ویو در یک hyperlink نمایش داده شوند تا اینجا که مشکلی با کاما وجود نداره و می شه اون رو search کرد و لینک فایل ضمیمه رو بدست آورد مشکل اینجاست که از کجا تشخیص داده شود که مثلا a.rar مربوط به انجمن asp.net و b.rar مربوط به انجمن sql هست. آیا این روش درست است که بعد از پسوند ها شماره مربوط به انجمن و سوال رو قرار بدم ؟؟؟یا راه حل خوبیه؟؟

Alireza_Salehi
چهارشنبه 15 فروردین 1386, 19:37 عصر
عزیز دل برادر شما بهتره یه تجدید نظری تو طراحی دیتابیست بکنی!
اول فکر همه جا رو بکن، موارد مرتبط رو دسته بندی کن(شناسایی موجودیت ها)، موارد تکراری رو حذف کن، بعدا جدول بساز!

این روشی که گفتم با کاما از هم جدا کنی کار راه بندازه ولی اصلا اصولی نیست! چون فیلد چند مقداری در نرمال سازی پایگاه داده مجاز نیست(1NF هم نیست).
کتاب طراحی پایگاه داده تالیف دکتر روحانی رانکوهی فصل نرمال سازی پایگاه داده رو بخون خیلی خیلی بهت کمک میکنه!


ببخشید سرت رو درد آوردم!
در جواب سوالت:مگه هر پستی معلوم نیست مال کدوم انجمنه؟ پس کافیه معلوم باشه هر فایلی مال کدوم پسته!

mohandess_anita
یک شنبه 25 آذر 1386, 14:28 عصر
من می خوام بدونم که چطوری می شه یک فایل ضمیمه رو در گرید ویو گذاشت
نام فایلها در بانک ذخیره شده اند می خوام حالت ضمیمه نمایش داده شوند تا کاربر بتواند آنها را دریافت کند

ClaimAlireza
یک شنبه 25 آذر 1386, 15:09 عصر
کافیه یه hyperLink ایجاد کنی و آدرس فایلت رو که تو بانکت ذخیره میشه به اون bind کنی.

موفق باشی...

mohandess_anita
یک شنبه 25 آذر 1386, 15:32 عصر
می شه در این مورد بیشتر توضیح بدید
شاید تعداد آن فایل ضمیمه از یکی بیشتر باشه

dr_csharp
یک شنبه 25 آذر 1386, 15:39 عصر
می شه در این مورد بیشتر توضیح بدید
شاید تعداد آن فایل ضمیمه از یکی بیشتر باشه

دوست عزیز اگر شما برای فایل هاتون یک جدول جداگانه در نظر بگیرید براحتی با پیاده سازی یک ارتباط یک به چند میتوانید برای هر کاربر به تعداد نامحدودی فایل نگهداری کنید

mohandess_anita
یک شنبه 25 آذر 1386, 16:21 عصر
من یک صفحه دارم که در ان می خوام از یک فیلد تیبل بانک مسیر فایلها رو بخونه و در صفحه داخل گرید ویو بر اساس تاریخ خاصی نمایش دهد( در پیج لود ) ولی نمی دونم به چه صورت می خوام این کار رو انجام بدم و چه کار کنم وقتی که کاربر بر روی ان کلیک کرد حالت دانلود به آن بگیرد

dr_csharp
یک شنبه 25 آذر 1386, 16:43 عصر
من یک صفحه دارم که در ان می خوام از یک فیلد تیبل بانک مسیر فایلها رو بخونه و در صفحه داخل گرید ویو بر اساس تاریخ خاصی نمایش دهد( در پیج لود ) ولی نمی دونم به چه صورت می خوام این کار رو انجام بدم و چه کار کنم وقتی که کاربر بر روی ان کلیک کرد حالت دانلود به آن بگیرد

برای دانلود فقط کافیه شما لینک آدرس موردنظر را به کاربر ارایه دهید . مثلا مقادیر خوانده شده از جدولتونو href کنید

Nightbat
یک شنبه 25 آذر 1386, 16:56 عصر
روشهای بهتری هم هست که آدرسه فایل روی سرور مشخص نمی شه. تو همین سایت اگه سرچ کنی، پیدا می کنی ( فکر کنم آقای راد تو یه تاپیک توضیح داده بود )

mohandess_anita
دوشنبه 26 آذر 1386, 09:20 صبح
من خیلی گشتم ولی چیزی در این مورد پیدا نکردم لطف می کنید من رو بیشتر راهنمایی کنید

Nightbat
دوشنبه 26 آذر 1386, 13:25 عصر
FileStream myStream= new FileStream("myFilename", FileMode.Open, FileAccess.Read);
byte[] buffer = new byte[(int) myStream.Length];
myStream.Read(buffer, 0, (int) myStream.Length);
myStream.Close();
Response.Clear();
Response.ContentType = "application/octet-stream";
Response.AddHeader("Content-Length", buffer.Length.ToString());
Response.AddHeader("Content-Disposition", "attachment; filename=myFileName");
Response.BinaryWrite(buffer);
Response.End();