PDA

View Full Version : سوال: ذخیره فایل در فولدری در داخل سرور ( کامپیوتر، نه اینترنت )



forodo
چهارشنبه 11 دی 1392, 14:23 عصر
سلام
توی سایت سرچ کردم ولی اون چیزی که می خواستم رو پیدا نکردم فقط این بود (http://barnamenevis.org/showthread.php?401984-%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%B9%DA%A9%D8%B3-%D8%AF%D8%B1-%DB%8C%DA%A9-%D9%81%D8%A7%DB%8C%D9%84-%D8%AF%D8%B1-%D8%B3%D8%B1%D9%88%D8%B1-%DB%8C%D8%A7-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3&highlight=%D8%B0%D8%AE%DB%8C%D8%B1%D9%87+%D9%81%D8 %A7%DB%8C%D9%84+%D8%AF%D8%B1+%D8%B3%D8%B1%D9%88%D8 %B1) که به درد من نخورد.

چه طوری می تونم فایلی رو داخل سرور (در شبکه داخلی ، منطورم اینه که نمی خوام از طریق اینترنت فایل ارسال کنم) از یک سیستم به سیستم دیگه ارسال کنم؟

fmehrvarzi
چهارشنبه 11 دی 1392, 15:14 عصر
برا ارسال پیام ساده به این لینک نگاه کن هم با سوکت پروگرمینگ آشنا میشی
Introduction to TCP client server in C#‎ (http://www.codeproject.com/Articles/1415/Introduction-to-TCP-client-server-in-C)

و برا ارسال
File Transfer using WCF and Socket (http://www.codeproject.com/Articles/37057/File-Transfer-using-WCF-and-Socket)

برنامه کوچک برا ارسال فایل از سرور به کلاینت
Small-File-Transfer-from-Server-to-Client (http://www.codeproject.com/Articles/461938/Small-File-Transfer-from-Server-to-Client)

forodo
چهارشنبه 11 دی 1392, 15:55 عصر
کامپیوترها شبکه هستند.
پیغام نمی خوام بدم.
برنامه هم ویندوزی هستش نه وب. اصلاً کاری به اینترنت ندارم.
توی سرور تمام اطلاعات داخل بانک اطلاعاتی ذخیره می شوند ولی می خوام یک فولدر توی سرور درست کنم که داخل اون عکسها و فایلهای ورد رو ذخیره کنم و نمی خوام داخل بانک اطلاعاتی ذخیره کنم.
حالا نمی دونم چطور می تونم یک فایل رو با openfiledialog که انتخاب کردم داخل اون فولدری که داخل سرور هست ذخیره کنم؟؟؟

fmehrvarzi
چهارشنبه 11 دی 1392, 16:08 عصر
چرا تو خود بانک ای که داخل سرور هست ذخیره نمیکنی؟ (شما که میخواهی روی سرور ذخیره کنی، حالا فرقش چیه تو بانک باشه یا خارج بانک؟)

forodo
چهارشنبه 11 دی 1392, 16:23 عصر
الان توی بانک ذخیره می شه.
به سه دلیل:
1- می خوام یاد بگیرم ( مهمترین دلیلش )
2- وقتی می خوام داخل بانک بریزم و فراخوانی کنم باید کدهای مربوط به بانک اطلاعاتی بنویسم که سرعت پایین میاد
3- چون بایت بایت ذخیره می شه و فراخوانی می شه باید بگیرم داخل یه فایل دیگه بریزم بعد اجراش کنم ولی اونطوری فقط آدرس فایل رو ذخیره می کنم و فقط می ره از اونجا فراخوانی می کنه.

Reza_Yarahmadi
چهارشنبه 11 دی 1392, 20:13 عصر
2- وقتی می خوام داخل بانک بریزم و فراخوانی کنم باید کدهای مربوط به بانک اطلاعاتی بنویسم که سرعت پایین میاد
به هر حال شما میخواید یکبار آدرس فایل رو بخونید و بعد فایل رو از روی سیستم به کلاینت منتقل کنید.
اگر هم بخواید پوشه مورد نظرتون رو Share کنید که بحث های امنیتی مطرح میشه.

3- چون بایت بایت ذخیره می شه و فراخوانی می شه باید بگیرم داخل یه فایل دیگه بریزم بعد اجراش کنم ولی اونطوری فقط آدرس فایل رو ذخیره می کنم و فقط می ره از اونجا فراخوانی می کنه.
اگه منظورتون برنامه سمت سروره، میتونید از قابلیت File Table موجود در SQL Server استفاده کنید.

بحث ذخیره فایل توی دیتابیس یا خارج دیتابیس بارها توی نت مطرح شده(+ (http://www.dotnettips.info/post/307/%D8%B0%D8%AE%DB%8C%D8%B1%D9%87-%D8%B3%D8%A7%D8%B2%DB%8C-%D9%81%D8%A7%DB%8C%D9%84%E2%80%8C%D9%87%D8%A7-%D8%AF%D8%B1-%D8%AF%DB%8C%D8%AA%D8%A7%D8%A8%DB%8C%D8%B3-%DB%8C%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D9%81%D8%A7%DB%8C%D9%84-%D8%B3%DB%8C%D8%B3%D8%AA%D9%85-%D9%85%D8%AA%D8%AF%D8%A7%D9%88%D9%84) ، + (http://www.m0911.com/?p=654) ، + (http://research.microsoft.com/apps/pubs/default.aspx?id=64525) ، + (http://akashkava.com/blog/127/huge-file-storage-in-database-instead-of-file-system/) ، + (http://programmers.stackexchange.com/questions/150669/is-it-a-bad-practice-to-store-large-files-10-mb-in-a-database)).

به هر حال برای ذخیره فایل در پوشه ای سمت سرور ، با توجه به استفاده از SQL Server ، میتونید از این روش (http://barnamenevis.org/showthread.php?417859-کپی-یک-فایل-در-سرور-با-استفاده-از-IP-با-اسکیوال-سرور) هم استفاده کنید.

fmehrvarzi
چهارشنبه 11 دی 1392, 22:13 عصر
2- وقتی می خوام داخل بانک بریزم و فراخوانی کنم باید کدهای مربوط به بانک اطلاعاتی بنویسم که سرعت پایین میاد
اگر هم بخواهید سرعت را افزایش دهید باید بانکتون را بهینه کنید مثلاً اگز از ویو استفاده میکنید بهتره از اونها ایندکس تهیه کنید و با ایندکس ها کار کنید
باید ببینید چرا سرعت کاهش میابد و چقدر کاهش میابد ؟ ممکن است مقدار خیلی زیادی عکس را با حجم زیاد ذخیره میکنید، بهتره برا عکس هاتون یه حداکثر حجمی (مثلاً 100 کیلو بایت) قائل شوید.
عوامل بسیار در کاهش سرعت هست باید ریشه یابی کنیید

forodo
چهارشنبه 11 دی 1392, 22:25 عصر
نمی خوام کاری با بانک اطلاعاتی داشته باشم.
اصلاً فرض کنید بانک اطلاعاتی ندارم.

اینکه فایلی رو داخل بانک اطلاعاتی بریزم رو آموزشش رو در این تاپیک (http://barnamenevis.org/showthread.php?425592-%D8%B1%DB%8C%D8%AE%D8%AA%D9%86-%D9%87%D8%B1-%D9%86%D9%88%D8%B9-%D9%81%D8%A7%DB%8C%D9%84%DB%8C-%D8%AF%D8%A7%D8%AE%D9%84-%D8%A8%D8%A7%D9%86%DA%A9-%D8%A7%D8%B7%D9%84%D8%A7%D8%B9%D8%A7%D8%AA%DB%8C-%D8%A7%DA%A9%D8%B3%D8%B3-%D9%88-%D9%81%D8%B1%D8%A7%D8%AE%D9%88%D8%A7%D9%86%DB%8C-%D9%88-%D8%A7%D8%AC%D8%B1%D8%A7%DB%8C-%D8%A2%D9%86-%D8%AF%D8%B1-%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87-%D8%AE%D9%88%D8%AF%D8%B4) قرار دادم.
می خوام یاد بگیرم که داخل یک فولدر داخل سرور بریزم.

می خوام کاربر فایلی رو که می خواد، داخل یک فولدر، داخل سرور بریزه و آدرسش ( زیاد مهم نیست کجا ذخیره می شه ) یه جایی ذخیره می شه.
بعد مثلاً اسم اون فایل ali هستش. کاربر فایل ali رو فراخوانی می کنه و یک کپی از اون گرفته بشه و داخل کامپیوتر کاربر ریخته بشه و اجرا بشه.
همه اینها هم در برنامه ویندوزی انجام بشه نه وبی.

کد مربوط به اینکه فایل داخل سرور داخل وب ذخیره بشه نوشتم و اجرا شد. بعدش آدرس سرور داخل وب رو تغییر دادم و آی پی لپ تاپم رو دادم بهش ولی ارور داد.

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

mousa1992
چهارشنبه 11 دی 1392, 23:15 عصر
ببین عزیز من توی سی شارپ این چیزی که شما میگید تعبیه نشده و خودتون باید براش کد بزنید! یکی از دوستان چند نمونه برنامه هم قرار داده بودن براتون که انتقال فایل توی شبکه رو انجام می داد! جواب سوالتون هموناست

krasus
پنج شنبه 12 دی 1392, 01:43 صبح
سلام
من می خوام برنامه ای بنویسم که بین دو سیستم که مستقیم از طریق کابل LAN به هم وصل هستن فایلی رو منتقل کنه.(این فایل می تونه هر فرمتی باشه)

ببین عزیز من توی سی شارپ این چیزی که شما میگید تعبیه نشده و خودتون باید براش کد بزنید!
من یه چیزو متوجه نمی شم. وقتی توی ویندوز میشه فایل یا فولدری رو شیر کرد و برای دسترسی به اون میشه از طریق سیستم عامل یه رمز تعیین کرد ، چه طور ممکن هست که کدی برای استفاده از این خاصیت ویندوز تعبیه نشده باشه؟

Reza_Yarahmadi
پنج شنبه 12 دی 1392, 12:18 عصر
اگه میخواید یه Shared Folder درست کنید و به همه کلاینت ها دسترسی بدید میتونید از لینک زیر کمک بگیرید
http://stackoverflow.com/questions/659013/accessing-a-shared-file-unc-from-a-remote-non-trusted-domain-with-credentials
اگه میخواید فقط کلاینت ها دسترسی مستقیم نداشته باشند باید با یکی از روشهای زیر عمل کنید
- 2 برنامه بنویسید یکی برنامه سرور و یکی کلاینت؛ و با روشهایی از قبیل Socket Programming , Remoting , WCF بین ذو برنامه ارتباط برقرار کنید.
- روش دیگه طبق همون لینکی که واستون گذاشتم (اینجا (http://barnamenevis.org/showthread.php?417859-%C3%9A%C2%A9%C3%99%C2%BE%C3%9B%C2%8C-%C3%9B%C2%8C%C3%9A%C2%A9-%C3%99%C2%81%C3%98%C2%A7%C3%9B%C2%8C%C3%99%C2%84-%C3%98%C2%AF%C3%98%C2%B1-%C3%98%C2%B3%C3%98%C2%B1%C3%99%C2%88%C3%98%C2%B1-%C3%98%C2%A8%C3%98%C2%A7-%C3%98%C2%A7%C3%98%C2%B3%C3%98%C2%AA%C3%99%C2%81%C 3%98%C2%A7%C3%98%C2%AF%C3%99%C2%87-%C3%98%C2%A7%C3%98%C2%B2-IP-%C3%98%C2%A8%C3%98%C2%A7-%C3%98%C2%A7%C3%98%C2%B3%C3%9A%C2%A9%C3%9B%C2%8C%C 3%99%C2%88%C3%98%C2%A7%C3%99%C2%84-%C3%98%C2%B3%C3%98%C2%B1%C3%99%C2%88%C3%98%C2%B1)) از SQL Server برای کپی کردن فایل توی پوشه مورد نظرتون کمک بگیرید(این روش دیگه نیازی به برنامه دوم نداره)