PDA

View Full Version : مبتدی: نمایش ادرس فایل در FileUpload



kh-emami
جمعه 01 آبان 1394, 12:20 عصر
با سلام خدمت دوستان
یا سوال داشتم میخواستم ببینم ایا میشه ادرس فایل انتخابی کاربر رو از FileUpload گرفت یا نه؟
ببینید دوستان من تعداد 9000 تا 10000 تا فایل به حجم 50 گیگ پی دی اف رو میخواستم در دیتابیس ذخیره کنم ولی دیدم به علت زیاد بودن حجم فایل ها سرعت استفاده میاد پایین، خب به این نتیجه رسیدم که ادرس این فایل ها رو در دیتابیس ذخیره کنم تا سرعت خواندن فایل ها بیشتر شود.


البته string filename = Path.GetFileName(FileUpload1.PostedFile.FileName); نام فایل انتخابی رو میدهد ادرس رو نمی دهد.

حالا موقع ذخیره فایل میخواستم از کنترل FileUpload استفاده کنم تا کاربری که می خواد ثبت اطلاعات کنه راحت تر باش
فرض بر روی سرور همه فایل ها بر روی درایو D داشته باشیم اون فقط انتخاب کنه و ادرس این فایل ذخیره شود (مثلا با انتخاب فایل ادرسش مانند D:\k.pdf رو در دیتابیس ذخیره کنم)
البته این رو هم بگم ادرس رو به صورت دستی میشه اون کسی که می خواد ادرس فایلی رو که می خواد ذخیره کنه رو در تکست باکس بنویسه و منم همین ادرس رو تو دیتابیس ذخیره می کنم و میتونم این ادرس رو بخونم و فایل رو نمایش بدم.

دوستان اگر میدونه باید چطور این کار رو انجام بدم خواهش میکنم راهنمایی بفرماید
لطفا
با تشکر

adineh67
جمعه 01 آبان 1394, 14:42 عصر
سلام
فکر کنم اینطوری جواب بگیری


string filetype1 = System.IO.Path.GetFullPath(FileUpload1.FileName.To String());

kh-emami
جمعه 01 آبان 1394, 15:59 عصر
دوست عزیز با تشکر
ولی این قطعه کدی که شما گذاشتید هر فایلی که به ان بدهید به صورت
C:\Program Files\IIS Express\Doc5.pdf
بر میگرداند من میخواستم ببینم مثلا اگه یه فایل رو تو درایو D انتخاب کردی مسیر کلی رو بهت بده
.
.
.
البته فکر نکنم این کار کلا جواب بده چون فکر کنم این FileUpload که ما استفاده نیکنیم برای کاربر باشه به خاطر همین به این صورت استفاده از اون درست نیست
از دوستان گرامی اگر کسی نظری دارد لطفا راهنمایی کند
با تشکر

adineh67
جمعه 01 آبان 1394, 17:47 عصر
این قطعه کدی که شما گذاشتید هر فایلی که به ان بدهید به صورت
C:\Program Files\IIS Express\Doc5.pdf
بر میگرداند من میخواستم ببینم مثلا اگه یه فایل رو تو درایو D انتخاب کردی مسیر کلی رو بهت بده


متوجه منظورتون نشدم
یعنی شما میخوای فقط اسم درایو + اسم فایل انتخاب شده نمایش داده بشه نه مسیر کاملی که کاربر طی کرده تا فایل رو انتخاب کنه؟

kh-emami
جمعه 01 آبان 1394, 21:54 عصر
دوست عزیز شما فرض کن یه فایل داری تو
E:\DataBase\New folder\a.pdf
حالا اگه این فایل رو با FileUpload انتخاب کنی با کدی که شما گفتید این مقدار رو برای ادرس بر میگرداند
C:\Program Files\IIS Express\a.pdf را برمیگرداند نه ادرس فایل را
امیدوارم متوجه شده باشید
با تشکر که حداقل شما جواب میدید

adineh67
شنبه 02 آبان 1394, 07:20 صبح
دوست عزیز فکر نمیکنم این مورد که شما میخوای شدنی باشه چون در هر صورت مسیر فیزیکی روی سرور برگردونده میشه
یه صحبت دیگه اینکه روشی که شما در نظر گرفتی نمیشه توش فایلها رو مدیریت کرد اگه فایلها به اشتباه حذف و یا جابجا شدن دیگه دسترسی بهشون مشکل ساز میشه،از filestram در sql R2 استفاده کنید و فایلهاتون رو بصورت باینری تو دیتابیس ذخیره کنید

kh-emami
شنبه 02 آبان 1394, 19:59 عصر
با کما تشکر از شما
من در مورد filestram چیزی نمی دونم ممنون میشم یه توضیح کوچیک بدید یا منبعی رو بفرمایید
طبق بررسی هایی که من کردم به این نتیجه رسیدم مطلب شما درسته ولی اگر کل فایل ها رو تو دیتابیس ذخیره کنم و همزمان 10 تا 15 نفر بخوان از این دیتابیس استفاده کنن سرعت خیلی خیلی میاد پایین چون خود دیتابیس یه چیزی حدود 50 گیگ میشه و سرعت خواندن میاد پایین...........
اخرش به این نتیجه رسیدم یه برنامه تحت ویندوز بنویسم و از open file استفاده کنم و برای جستجو و کارهای دیگه از ASP یا هر چیزی میشه استفاده کرده چون تحت ویندوز میشه ادرس دقیق رو گرفت برای حذف فایل یا Cut کردن هم باید رو پوشه یا محل ذخیره سازی فایل ها یه جوری محافظت کنم .

بازهم تشکر

adineh67
شنبه 02 آبان 1394, 21:22 عصر
مطلب در مورد filestream خیلی زیاد هست فقط کافیه تو گوگل بزنید: filestream چیست؟
فقط یه توضیح مختصر اینکه وقتی فایل رو مستقیم تو دیتابیس ذخیره میکنیم یه قسمتی از بافر sql مختص این کار میشه و همین باعث میشه سرعت کار با فایل پایین بیاد اما فایل استریم این مشکل رو نداره و فقط حجم درایومون رو درگیر میکنه
در این مورد مطالعه کنید اگه کمکی از دستم بربیاد دریغ نمیکنم