PDA

View Full Version : سوال: انتخاب نام تصادفی برای فایل



mmnoody2006
پنج شنبه 24 بهمن 1387, 09:55 صبح
سلام من می خوام کاربر من فایل های عکس رو آپلود کنه تامپ نایل کنه و با نام
تصادفی در پوشه upload ذخیره کنه .

mehdi.mousavi
پنج شنبه 24 بهمن 1387, 10:00 صبح
سلام من می خوام کاربر من فایل های عکس رو آپلود کنه تامپ نایل کنه و با نام تصادفی در پوشه upload ذخیره کنه .

سلام.
با خواسته هاتون آشنا شدیم.
حالا سوالتون رو مطرح کنید.

mmnoody2006
پنج شنبه 24 بهمن 1387, 10:19 صبح
از اسم تاپیک معلومه من می خوام فایل هام اینطوری xxx-xxx.xxx در پوشه با نام تصادفی ذخیره بشه

mehdi.mousavi
پنج شنبه 24 بهمن 1387, 10:35 صبح
از اسم تاپیک معلومه من می خوام فایل هام اینطوری xxx-xxx.xxx در پوشه با نام تصادفی ذخیره بشه

سلام.
روشهای زیادی برای اینکار وجود داره:



استفاده از System.IO.Path.GetTempFileName() (بسته به شرایط!)
استفاده از تابع ذکر شده در این وبلاگ (http://coercedcode.blogspot.com/2008/03/c-generate-unique-filenames-within.html)
استفاده از منطق خودتون برای تولید نام فایل (بر اساس تاریخ، ID و ...)
استفاده از Guid.NewGuid
و ...

mmnoody2006
پنج شنبه 24 بهمن 1387, 11:01 صبح
شماره 4 رو بیشتر توضیح بدید لطفا:قلب:

mehdi.mousavi
پنج شنبه 24 بهمن 1387, 11:10 صبح
شماره 4 رو بیشتر توضیح بدید لطفا:قلب:

میتونید با استفاده از کلاس Guid، اقدام به ساخت رشته هایی تحت عنوان GUID یا Globally Unique Identifier کنید و ار این اسامی بعنوان نام فایلهاتون استفاده کنید.

اما در مورد کار شما، احتمالا تصاویر متعلق به محصولات خاصی هستن که در بانک وجود دارن. هر محصول، قاعدتا حاوی یه Part#، SKU یا یه ID هستش... در نتیجه، شما بهتره از اون ID برای ایجاد نام فایل استفاده کنید و دنبال اسامی عجیب و غریب نرید.

mmnoody2006
پنج شنبه 24 بهمن 1387, 11:29 صبح
مشکل من اینه که هنوز چیزی رو تو دیتابیس ثبت نکردم که از ای دی اون استفاده کنم
نوع وبسایت هم از همین سایت های تبیغاتی هست که برای اسم عکس ها از
xxx-xxx.xxx استفاده می کنن

milade
پنج شنبه 24 بهمن 1387, 12:47 عصر
سلام
داداش جون به طور پیش فرض شما اینو ذخیره میکنید :

fc.SaveAs(sp + "Uploads/" + fc.FileName)
( fc نام کنترل اپدیت هست .)
خوب من با این فرمت رو میگیرم :

fx = System.IO.Path.GetExtension(fc.FileName)
خوب فرمت رو داریم و یه عدد رندم میسازم و اپدیت میکنم و نتیجه کلی میشه این :


fx = System.IO.Path.GetExtension(fc.FileName)
fc.SaveAs(sp + "Uploads/" + "123"+fx)

تموم شد رفت !
البته شما به جای 123 اون رندوم رو بزارش .
پیروز باشید و پایدار

mehdi.mousavi
پنج شنبه 24 بهمن 1387, 13:04 عصر
سلام بابا ملت رو نپیچون اقا مهدی جون !سلام. جواب شما روش استفاده از متود SaveAs رو نشون میده، نه "انتخاب نام تصادفی برای فایل" که نیاز ایشون بوده! پس به نظر میرسه این پاسخ شما باشه که ایشون رو میخواد گمراه کنه!

من گفتم اگر این عکسها مختص "محصولی" چیزی هستن، راه صحیحش استفاده از ID اون Entity در بانک هست. اگر هم که نه، میتونه هر کدوم از اون روشهایی که گفتم و دوست داره رو انتخاب کنه و اسم فایل تصادفیش رو تولید کنه. جواب من کاملا صریح، روشن و واضح بود.

milade
پنج شنبه 24 بهمن 1387, 13:39 عصر
خوب اگه واسه تصادف سازیه هست این هستش ( کلاس رندوم ، ساده ترین کلاس موجود ) :

Dim rnd As New Random
dim rndm= rnd.next(size)
اگه عددی نمیخوان برن دنبال یه کلاس دیگه ولی در حال همین هست .

پس به نظر میرسه این پاسخ شما باشه که ایشون رو میخواد گمراه کنه!
من متوجه این قسمت نشدم . من کدوم تکه رو فراموش کردم ؟
موفق باشید

mmnoody2006
سه شنبه 29 بهمن 1387, 18:24 عصر
ببینید دوستان من می خوام اول یه متنی رو از کاربر بگیرم و بعد ازش بپرسم که می خواد واسه این مقاله عکسی هم در نظر بگیره (همون طور که اسم روی مقاله می زاره ) یا نه .
در ضمن می خوام اگر 1 در 1 میلیون اگر عکسی با اسم قبلی وجود داره یه اسم دیگه براش استفاده بشه
یکی یه روشی نداره که اگر عکسی با اون اسم بود برنامه عکس العمل نشون بده من منظورم ساخت
اسم تصادفی برای عکس نیست

milade
چهارشنبه 30 بهمن 1387, 12:43 عصر
سلام علیکم .
راه حل جالبی الان خاطرم نیست اما میتونید با کلاس های File.Io چک کنید
ممکنه راح حل دیگه ای هم باشه .
کار کردن با Flie.Io تقریبا ساده هست
موفق باشید

mmnoody2006
چهارشنبه 30 بهمن 1387, 15:46 عصر
كسي كمك نمي كنه :گریه:

mehdi.mousavi
چهارشنبه 30 بهمن 1387, 16:56 عصر
ببینید دوستان من می خوام اول یه متنی رو از کاربر بگیرم و بعد ازش بپرسم که می خواد واسه این مقاله عکسی هم در نظر بگیره (همون طور که اسم روی مقاله می زاره ) یا نه. در ضمن می خوام اگر 1 در 1 میلیون اگر عکسی با اسم قبلی وجود داره یه اسم دیگه براش استفاده بشه یکی یه روشی نداره که اگر عکسی با اون اسم بود برنامه عکس العمل نشون بده من منظورم ساخت اسم تصادفی برای عکس نیست

سلام.
من به این قسم سوالات آلرژی دارم! وقتی دارید یه متنی از کاربر میگیرید، قراره انشاءال... اونو جایی Save کنید دیگه، نه؟ اگر خدا بخواد، اون یه جا، بانک اطلاعاتی هستش دیگه. نه؟ و طبیعتا، هر مقاله، پست یا هر چی که اسمش رو میذارید، یه ID ی منحصر به فرد داره دیگه. نه؟ و قراره از کاربر بپرسید که میخواهید عکسی به این پست یا مقاله الصاق کنه. نه؟ و وقتی جواب مثبت داد، میخواهید عکس رو یک جایی رو هارد سرور نگه دارید دیگه. نه؟ خوب، اینو که من تو همون پست شماره 6 جواب دادم! چه نیازی بود 13 تا پست مطرح بشه تا برگردیم به پست 6؟

در پست 6، نوشتم، "اما در مورد کار شما، احتمالا تصاویر متعلق به محصولات خاصی هستن که در بانک وجود دارن. هر محصول، قاعدتا حاوی یه Part#، SKU یا یه ID هستش... در نتیجه، شما بهتره از اون ID برای ایجاد نام فایل استفاده کنید و دنبال اسامی عجیب و غریب نرید."

ظاهرا این پاسخ گنگ بوده واستون که اینقدر مساله کش پیدا کرده!

اگر خدا بخواد، شما یه بانک دارید که اطلاعات مزبور رو توش نگه میدارید. هر مقاله یه ID منحصر به فرد داره. یعنی وقتی یه نفری میاد متنی رو Upload میکنه، در واقع یک Transaction شروع میشه. مرحله دوم این Transaction (در صورت نیاز کاربر به ارسال تصویر)، ایجاد تصویری با نام [ID].jpg هستش. یعنی مثلا اگر متن مورد نظر بعد از Insert شدن تو بانک، عدد 7 رو بعنوان ID بخودش اختصاص داد، عکسی هم که در مرحله بعد برای اون متن Upload خواهد شد، اسمش میشه 7.jpg و تو یه Directory ذخیره میشه. اگر به هر دلیلی خطایی رخ بده و فایل رو نشه ایجاد کرد، اینجا باید Rollback کنید Transaction رو. یعنی رکوردی هم که وارد بانک شده حذف میشه و بانک به State قبلی بر میگرده. اما اگر خدا خواست و فایل با موفقیت ایجاد شد، کافیه تا Transaction هم Commit بشه، چون هم فایل ایجاد شده و هم رکود مورد نظر.

حالا دیگه اینجا چه نیازی به مطلع شدن از وجود یا عدم وجود فایلی با اسم 7.jpg روی هارد هست؟ اگر کاربر خواست و عکس جدیدی رو دوباره Upload کرد، شما همون 7.jpg رو overwrite میکنید. هر وقت هم خواستید رکورد رو پاک کنید، باز باید Transactional اینکارو انجام بدید تا Integrity سیستم حفظ بشه.

mmnoody2006
جمعه 02 اسفند 1387, 09:26 صبح
اشتپ زدي جيگر من منظورم يه چيز ديگس
ببين تو اين سايت هاي تبليغات رايگان ديدي كه تو يه صفحه تبليغات رو مي نويسن و
تكميل مي كنن و بعد كه تكميل شد مياد بيرون و از كاربر مي پرسه آيا براي آگهي خود
عكس هم در نظر مي گيريد خب من مشكلم همينه اصلا توي ديتا بيس چيزي ذخيره نشده
كه من آي دي اونو بگيريم

raravaice
جمعه 02 اسفند 1387, 12:10 عصر
تاریخ و زمان آپلود فایل رو به همراه نام اصلی فایلی که داره آپلود میشه md5 کن به عنوان نام فایل ذخیره کن.

موفق باشی

salehbagheri
جمعه 02 اسفند 1387, 15:12 عصر
اشتپ زدي جيگر من منظورم يه چيز ديگس


دوست عزيز! يا سؤال رو خوب مطرح نميكنيد يا اينكه جواب هاي دوستان (براتون) گنگه!


ببين تو اين سايت هاي تبليغات رايگان ديدي كه تو يه صفحه تبليغات رو مي نويسن و
تكميل مي كنن و بعد كه تكميل شد مياد بيرون و از كاربر مي پرسه آيا براي آگهي خود
عكس هم در نظر مي گيريد خب من مشكلم همينه
من در اين جمله شما مشكلي پيدا نكردم! مشكلتون دقيقا چيه؟

اگر مشكلتون اينه كه عكسها ممكنه با هم قاطي بشن يا روي هم OverWrite بشن، همون طور كه در چند پست قبلي گفته شد، بايد عكسها رو Rename كنيد! (كار سختيه؟) يا اينكه براي عكسهاتون پوشه مجزا درست كنيد!

اميدوارم مشكلتون ديگه حل شده باشه!

با تشكر!

mehdi.mousavi
جمعه 02 اسفند 1387, 19:19 عصر
اشتپ زدي جيگر

سلام.
امیدوارم مدیریت سایت، برنامه ای برای ریشه کن کردن این نوع ادبیات در سایت داشته باشن.

پاورقی: در یک محفل علمی، نوشتن یه پیام بصورت Jenglish بدتره، یا استفاده از چنین ادبیاتی؟

mmnoody2006
پنج شنبه 08 اسفند 1387, 15:02 عصر
مجبور شدم سبک برنامه رو تغییر بدم تشکر از همه............:قلب: