PDA

View Full Version : راه حلی برای نام های تکراری در پوشه اپلود



boysilent
چهارشنبه 28 دی 1390, 15:50 عصر
سلام
دوستان بنده یه صفحه برای اپلود گزاشتم برای اینکه اسم ها مثل هم نباشه اینکارو کردم ولی بنظرم زیاد جالب نیست؟
max id رو بدست اوردم و + نام فایل کردم؟
مثلا اگه بود ali.jpg
بشه\25ali.jpg


mycommand.CommandText = "select max(id) maxid from wupload";




mycommand.Parameters.AddWithValue("@picfile", "(" + (max + 1).ToString() + ")" + FileUpload2.FileName);
FileUpload1.SaveAs(Request.PhysicalApplicationPath + "files\\" + "(" +( max + 1).ToString() + ")" + FileUpload1.FileName);

xalerebvar
چهارشنبه 28 دی 1390, 15:57 عصر
راههای زیادی برای انجامش داری ، من همیشه بدین طریق عمل می کنم که UserName یا ID کاربر که Primary Key است رو بگیری و به روش بالا به انتهای نام فایلت اضافه کنی.

hamid_shrk
چهارشنبه 28 دی 1390, 16:01 عصر
اینم یکیشه :

DateTime.Now.ToString().Replace("/", "").Remove(0, 2) + "-" + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + "-1-" + FileUpload1.FileName

boysilent
چهارشنبه 28 دی 1390, 16:14 عصر
اینم یکیشه :

DateTime.Now.ToString().Replace("/", "").Remove(0, 2) + "-" + DateTime.Now.Hour.ToString() + DateTime.Now.Minute.ToString() + DateTime.Now.Second.ToString() + "-1-" + FileUpload1.FileName

ایول
این تاریخ رو اتصال میده و / هاشو حذف میکنه اره ولی بازم امکان داره یکی بشن ها؟

hamid_shrk
چهارشنبه 28 دی 1390, 16:15 عصر
چجوری یکی بشن؟
تاریخ + زمان + نام فایل چجوری میتونه تکرار بشه؟
مثال بزنید اگه میشه

boysilent
چهارشنبه 28 دی 1390, 16:22 عصر
:خجالت:
ولی بنظرتون کدوم بهتره/اون کاری که من کردم سرعت رو میگیره درسته؟

hamid_shrk
چهارشنبه 28 دی 1390, 16:28 عصر
بله اگه یک اتصال به دیتا بیس فقط برای همین کار داشته باشید خوب این اصلا خوب نیست.
تو وب باید تا میتونید دفعات اتصال به دیتا بیس رو کم کنید.

xalerebvar
چهارشنبه 28 دی 1390, 16:33 عصر
استفاده از UserName یا ID کاربر لاگین کرده سرعتش کمتره نسبت به مثالی که hamid_shrk (http://barnamenevis.org/member.php?99278-hamid_shrk) عزیز زده ، دلیلش واکشی UserName از پایگاه داده ست ، مثالی که hamid_shrk (http://barnamenevis.org/member.php?99278-hamid_shrk) زدند ایده ی خوبیه اما یه چیزی که بایستی در نظر بگیرید اما امکانش ضعیفه افزودن دو فایل هم نام در یک زمان مشابه توسط دو کاربر مختلف می باشد. شما می تونید طول یا سایز فایل رو هم گرفته و به انتهاش اضافه کنید.
موفق باشید

asp2.net
چهارشنبه 28 دی 1390, 16:37 عصر
میتوانید از تابع رندم استفاده کنید و اسم فایل را به اون بچسبانید

maysam09
چهارشنبه 28 دی 1390, 17:40 عصر
برای این کار از تابع GUID (http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=335)استفاده کنید..این امکان و به شما میده که یک کد شناسایی غیر تکراری درست کنید...موفق باشید

boysilent
چهارشنبه 28 دی 1390, 19:27 عصر
برای این کار از تابع GUID (http://www.csharpfriends.com/Articles/getArticle.aspx?articleID=335)استفاده کنید..این امکان و به شما میده که یک کد شناسایی غیر تکراری درست کنید...موفق باشید
نه بابا این خیلی طولانیه /فضضا اشغال میکنه

raziee
چهارشنبه 28 دی 1390, 20:19 عصر
نه بابا این خیلی طولانیه /فضضا اشغال میکنه
با سلام.
بهترین راه(به نظر من) استفاده از نوع داده GUID برای ایجاد نام یکتا هست تا بتونید فایل ها رو ذخیره کنید.
شما باید نام فایل رو در دیتابیس ذخیره کنید.
برای دسترسی به فایل (دانلود) بر اساس کد منحصر به فردی که دارید(کلید یا همون GUID) درخواست رو از کاربر میگیرید.
دادن آدرس غیر مستقیم امنیت فایل ها رو افزایش میده.

rahmatr
چهارشنبه 28 دی 1390, 21:50 عصر
از Path.GetRandomFileName (http://msdn.microsoft.com/en-us/library/system.io.path.getrandomfilename.aspx) هم میتونید استفاده کنید :

public static string RandomFileName(string path)
{
string fileName = Path.GetRandomFileName();
if (File.Exists(Path.Combine(path, fileName)))
{
return RandomFileName(path);
}
return Path.Combine(path, fileName);
}

maysam09
چهارشنبه 28 دی 1390, 21:58 عصر
بحرحال شما نیاز به یک کلید یکتا دارید و این گزینه هم از طرف برنامه نویس ها و هم از طرف ماکروسافت پیشنهاد میشه

r_s1389@yahoo.com
چهارشنبه 28 دی 1390, 22:18 عصر
میتونید یک عدد رندم تولید کنید و به نام فایل تان اضافه کنید

VMTCO.IR
چهارشنبه 28 دی 1390, 23:33 عصر
بهترین روش همینیه که rahmatr گفتن، که مورد تائید مایکروسافت هم هست