PDA

View Full Version : سوال: تغییرنام فایلهای تکراری درهنگام آپلود



Shamim832
جمعه 02 مهر 1389, 20:07 عصر
مهندسین عزیزخسته نباشید
دوستان من می خوام بررسی کنم که اگه کاربران فایل هایی با نام یکسان اپلود کردند نمی خوام روی فایل قبلی نوشته شود(over write ) و می خوام با نام جدید ذخیره شود
ببینید برای اینکه اسامی تکراری نشه از ساعت دقیقه ثانیه و صدم ثانیه بصورت ترکیبی برای نام فایل می خوام استفاده کنم
یعنی نام تصاویرآپلودشده به این شکل باشن یعنی زمان آپلود به نام تصویراضافه بشه که دراینصورت فکرنکنم هیچ تصویری همنام باشه :image.jpeg/20:15:12:454
اما نمی دونم چطوری نام فایل رو تغییر بدم؟؟؟؟؟؟؟
نمی دونم این روش کارامده یا نه؟؟؟؟
یه نمونه سورس دیدم که تصاویر رو درپوشه هایی که نام اونا (نام پوشه ها : ساعت دقیقه ) بودذخیره می کرد اما به نظرمن این روش کارآمدنیست چون در اینصورت پوشه Uploads پرازپوشه هایی به این شکل می شه ؟؟؟؟؟

Dim savepath As String = Request.PhysicalApplicationPath
savepath += "Uploads\"
If FileUpload1.HasFile Then
If FileUpload1.PostedFile.ContentLength > 102400 Then '100*1024
Response.Write("حجم فایل ارسالی بیشتر از 100 کیلوبایت میباشد")
Else
If FileUpload1.PostedFile.ContentType = "image/jpeg" Then
savepath += FileUpload1.PostedFile.FileName
FileUpload1.SaveAs(savepath)
Response.Write("فایل موردنظرباموفقیت آپلودشد!!!")
Else
Response.Write("فقط فایل باپسوند(jpeg)میتواندآپلودشود !!")
End If

End If
Else
Response.Write("فایلی انتخاب نشده است")
End If

خودم یه کارایی کردم اما ارور می ده؟؟

Dim Time As String
Time = DateTime.Now.Hour.ToString() + ":"
Time += DateTime.Now.Minute.ToString() + ":"
Time += DateTime.Now.Second.ToString() + ":"
Time += DateTime.Now.Millisecond.ToString() + "\"

Dim FileName As String



Dim savepath As String = Request.PhysicalApplicationPath
savepath += "Uploads\"
If FileUpload1.HasFile Then
If FileUpload1.PostedFile.ContentLength > 204800 Then
Response.Write("حجم فایل ارسالی بیشتر از 200 کیلوبایت میباشد")
Else
If FileUpload1.PostedFile.ContentType = "image/jpeg" Then
FileName = Time + FileUpload1.PostedFile.FileName
savepath += FileName
FileUpload1.SaveAs(savepath)
Response.Write("فایل موردنظرباموفقیت آپلودشد!!!")
Else
Response.Write("فقط فایل باپسوند(jpeg)میتواندآپلودشود !!")
End If
End If
Else
Response.Write("فایلی انتخاب نشده است")
End If

باتشکر منتظر پاسخ شما دوستان هستم..

pedram_ns
جمعه 02 مهر 1389, 20:29 عصر
بله براي اپلود تصاوير معمولا نام تصوير رو با تركيبي از زمان و تاريخ اپلود ذخيره مي كنن با كد هاي زير مي تونيد اين كار رو بكنيد:

Dim filename As String = ""
Dim filenameWext As String = Path.GetFileNameWithoutExtension(Upload.FileName)
Dim ext As String = Path.GetExtension(Upload.FileName)
Dim day As String = DateTime.Now.Day.ToString()
Dim Month As String = DateTime.Now.Month.ToString()
Dim year As String = DateTime.Now.Year.ToString()
Dim sec As String = DateTime.Now.Second.ToString()
Dim min As String = DateTime.Now.Minute.ToString()
Dim Hour As String = DateTime.Now.Hour.ToString()
filename = filenameWext + "-" + year + Month + day + "-" + Hour + min + sec + ext


Upload.SaveAs(Server.MapPath("~/images//") + filename

Peyman.Gh
جمعه 02 مهر 1389, 23:57 عصر
Guid.NewGuid();

Shamim832
شنبه 03 مهر 1389, 10:17 صبح
Guid.NewGuid();
سلام می تونید بیشتر توضیح بدید! این دستور چه کار می کنه؟

alireza_s_84
شنبه 03 مهر 1389, 11:16 صبح
سلام می تونید بیشتر توضیح بدید! این دستور چه کار می کنه؟

این متد از کلاس Guid یک کد کاملا منحصر بفرد بر اساس زمان سیستم تولید میکنه و از اونجا که هیچوقت کدی که ایجاد میشه تکراری نیست لذا بهترین گزینه برای نامگذاری فایلهاست.
موفق باشید

Shamim832
شنبه 03 مهر 1389, 11:22 صبح
بله براي اپلود تصاوير معمولا نام تصوير رو با تركيبي از زمان و تاريخ اپلود ذخيره مي كنن با كد هاي زير مي تونيد اين كار رو بكنيد:

Dim filename As String = ""
Dim filenameWext As String = Path.GetFileNameWithoutExtension(Upload.FileName)
Dim ext As String = Path.GetExtension(Upload.FileName)
Dim day As String = DateTime.Now.Day.ToString()
Dim Month As String = DateTime.Now.Month.ToString()
Dim year As String = DateTime.Now.Year.ToString()
Dim sec As String = DateTime.Now.Second.ToString()
Dim min As String = DateTime.Now.Minute.ToString()
Dim Hour As String = DateTime.Now.Hour.ToString()
filename = filenameWext + "-" + year + Month + day + "-" + Hour + min + sec + ext


Upload.SaveAs(Server.MapPath("~/images//") + filename

ممنون از پاسختون من به این شکل از تاریخ وزمان اپلود استفاده کردم اما نمی دونم چرا همش ارور زیر رو می ده؟؟؟؟؟

Dim FileName As String = ""
Dim DateUpload As String = DateTime.Now.Year.ToString() + "\"
DateUpload += DateTime.Now.Month.ToString() + "\"
DateUpload += DateTime.Now.Day.ToString() + "_"

Dim TimeUpload As String
TimeUpload = DateTime.Now.Hour.ToString() + ":"
TimeUpload += DateTime.Now.Minute.ToString() + ":"
TimeUpload += DateTime.Now.Second.ToString() + ":"
TimeUpload += DateTime.Now.Millisecond.ToString() + "_"

Dim savepath As String = Request.PhysicalApplicationPath
savepath += "Uploads\"
If FileUpload1.HasFile Then
If FileUpload1.PostedFile.ContentLength > 102400 Then '100*1024
Response.Write("حجم فایل ارسالی بیشتر از 100 کیلوبایت میباشد")
Else
If FileUpload1.PostedFile.ContentType = "image/jpeg" Then
FileName = DateUpload + TimeUpload + FileUpload1.PostedFile.FileName
savepath += FileName
FileUpload1.SaveAs(savepath)
'FileUpload1.PostedFile.SaveAs(MapPath("Uploads\\") + FileName)
Response.Write("فایل موردنظرباموفقیت آپلودشد!!!")
Else
Response.Write("فقط فایل باپسوند(jpeg)میتواندآپلودشود !!")
End If
End If
Else
Response.Write("فایلی انتخاب نشده است")
End If


:عصبانی++::عصبانی++:
The given path's format is not supported.

Shamim832
شنبه 03 مهر 1389, 11:25 صبح
این متد از کلاس Guid یک کد کاملا منحصر بفرد بر اساس زمان سیستم تولید میکنه و از اونجا که هیچوقت کدی که ایجاد میشه تکراری نیست لذا بهترین گزینه برای نامگذاری فایلهاست.
موفق باشید

ممنون از پاسختون کدزیر رو یه نگاهی می کنید فکر می کنید کجاش رو اشتباه نوشتم این خط رو ایراد می گیره؟؟

FileUpload1.SaveAs(savepath)

MJ_PC88
شنبه 03 مهر 1389, 12:03 عصر
کد رو باید به این صورت بنویسی
FileUpload1.PostedFile.SaveAs

pedram_ns
شنبه 03 مهر 1389, 13:09 عصر
اين كد رو براي ذخيره تصوير امتحان كنيد ببنيد چي ميشه.

FileUpload1.PostedFile.SaveAs(Server.MapPath("uploads/") + FileName)

اين كه بعد از mappath نوشتم همون نام فولدر uploads است نمي دونم چرا اينجوري شده؟

Shamim832
شنبه 03 مهر 1389, 19:28 عصر
ممنون از پاسخ شما عزیزان ، هردو روش رو قبلا امتحان کرده بودم اما نشد!!! از نظر من که کدهام درسته ولی نمی دونم چرا اون ارور رو می ده !! احتمالا یه ایراد جزیی باید داشته باشه ؟؟
نظر دیگه ای ندارین ؟؟؟؟؟؟؟؟؟؟؟؟؟//

Peyman.Gh
شنبه 03 مهر 1389, 19:40 عصر
ممنون از پاسخ شما عزیزان ، هردو روش رو قبلا امتحان کرده بودم اما نشد!!! از نظر من که کدهام درسته ولی نمی دونم چرا اون ارور رو می ده !! احتمالا یه ایراد جزیی باید داشته باشه ؟؟
نظر دیگه ای ندارین ؟؟؟؟؟؟؟؟؟؟؟؟؟//

در صورت امکان پروژه را ضمیمه کنید.

Shamim832
شنبه 03 مهر 1389, 20:33 عصر
ممنون ،اینم فایل پروژه .

pedram_ns
شنبه 03 مهر 1389, 21:49 عصر
خوب واضحه نام يك فايل نمي تونه حاوي كاراكتر هاي زير باشه.
/><:*?
وقتي نام فايل رو تغيير مي ديد در نامش از / و : استفاده كرديد كه غلطه اين ها رو با كاراكترهاي مجاز جايگزين كنيد.
به نظر من اگر از هيچ كاراكتري استفاده نكنيد راحت تريد

Shamim832
شنبه 03 مهر 1389, 22:41 عصر
خوب واضحه نام يك فايل نمي تونه حاوي كاراكتر هاي زير باشه.
/><:*?
وقتي نام فايل رو تغيير مي ديد در نامش از / و : استفاده كرديد كه غلطه اين ها رو با كاراكترهاي مجاز جايگزين كنيد.
به نظر من اگر از هيچ كاراكتري استفاده نكنيد راحت تريد

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