PDA

View Full Version : چگونه یک عکس را پاک کنیم !



merlin_vista
چهارشنبه 11 مهر 1386, 17:52 عصر
من برای سایتم یک قسمت عضویت گذاشتم که کاربر بتونه عضو بشه و در قسمت مدیریت سایت هم قسمت دیگر که کاربر بتونه عضو ها را ویرایش بکنه و حذف بکنه !!
برای مدیریت کاربران از دیتاگرید استفاده کردم و دکمه ها برای ویرایش و حذف به خوبی کار میدهند ولی میخواهم وقتی مدیر یکی از کاربران را حذف کرد آواتور کاربر هم که یک عکس میباشد در یک فولدر خاص حذف شود !! یهنی یک فایل در یک پوشه حذف شود !! :متفکر: میخواستم بدونم روش کار چیه ! :لبخندساده::تشویق:

Behrouz_Rad
چهارشنبه 11 مهر 1386, 18:06 عصر
بستگی داره که آواتور کاربر رو چطوری شناسایی می کنی!
برخی نام عکس رو همون نام کاربری در نظر میگیرن، برخی دیگه نام عکس رو در دیتابیس ذخیره می کنن و حذف می کنن.

merlin_vista
چهارشنبه 11 مهر 1386, 19:13 عصر
من در قسمت عضویت وقتی کاربر آواتور را آپلود کرد نام آن را به در دیتابیس در فیلد userpic ذخیره میکنم و هر جا لازم داشته باشم آن را فراخانی میکنم !!
فلدری را که روی سرور برای عکسهای کاربر در نظر گرفتم نامش : "UserPic " میباشد !
حالا میخواهم در دکمه خذف دیتاگرید وقتی که سطر کاربر مشخص شده پاک میشه عکس آن هم پاک شو د!

merlin_vista
چهارشنبه 11 مهر 1386, 19:14 عصر
در ضمن من چگونه نام عکس را تغییر بدم به نام کاربر !
این هم آدرس صفحه عضویت من :
http://www.esfahannet.com/Register.aspx

abadanboy
چهارشنبه 11 مهر 1386, 19:43 عصر
خوب نام ax که از دیتابیست میاد رو بریز تو متغیر و بعد به صورت زیر حذف کن

مثلاً




string name=......;
File.Delete(Mappath("userpic\\")+name);

یا فقط


string name=......;
File.Delete("userpic\\"+name);

web developer
چهارشنبه 11 مهر 1386, 21:00 عصر
سلام

برای پاک کردن:



Dim Filepath as String = "Userpic/user.jpg"
System.IO.File.Delete(Server.MapPath(FilePath))


برای تغییر نام فایل هم:



myFile = file.PostedFile
Dim Filename As String = "username" & System.IO.Path.GetExtension(myFile.FileName)


موفق باشید.

merlin_vista
چهارشنبه 11 مهر 1386, 23:11 عصر
آقای web developer (http://barnamenevis.org/forum/member.php?u=44595) میشه این کدها را با استفاده از زبان سی شارپ بیان کنید !! اگر زحمتی نیست .
()()()()()()()()()()()
آقای abadanboy (http://barnamenevis.org/forum/member.php?u=45359) من نام فلدر را با نام عکس هر دو را در بانک ذخیره میکنم !!
یعنی به " fUserPic / pic.jpg " در فیلد مخصوص به ذخیره عکس ، ذخیره میشود برای این موضوع دیگر احتیاجی به نوشتن پوشه میباشد یا نه !!

abadanboy
چهارشنبه 11 مهر 1386, 23:51 عصر
نه دیگه احتیاجی به نام فولدر نیست ولی اگه فولدرت همیشه ثابت هست نیاز نیست تو دیتابیس بخوای ببریش

merlin_vista
چهارشنبه 11 مهر 1386, 23:55 عصر
راستی برای اینکه عکس ها با هم عوض نشه من !! مثلاً من فایل عکس با نام "a.jpg" را آپ میکنم و کسی دیگه هم عکس آن با همین نام است را آپلود میکنه ! شکی نداره که عکس ها به هم میریزه و هر دو عکس برای من و آن نفر یکی نشان داده میشه !!!!
برای رفع این مشکل من فکر کردم که اول تعداد عکس های داخل فلدر Userpic را بشماریم و بعد تعداد را داخل یک متغییر ریخته و آن را +1 کنیم و بعد عدد به دست آمده را با نام عکس Rename کنیم تا مشکل حل شود و دو عکس با یم نام در این پوشه وجود نداشته باشه !!
اما نمیدانم که چگونه فایلهای یک پوشه خاص را چگونه بشمارم و به فایل تعداد بدست آمده و +1 شده را به اسم فایل نسبت دهم !!

web developer
پنج شنبه 12 مهر 1386, 00:03 صبح
آقای web developer (http://barnamenevis.org/forum/member.php?u=44595) میشه این کدها را با استفاده از زبان سی شارپ بیان کنید !! اگر زحمتی نیست .


میتونی از Online Convertor ها استفاده کنی





{
string Filepath = "Userpic/user.jpg";
System.IO.File.Delete(Server.MapPath(FilePath));

myFile = file.PostedFile;
string Filename = "username" + System.IO.Path.GetExtension(myFile.FileName);
}



موفق باشید.

abadanboy
پنج شنبه 12 مهر 1386, 00:04 صبح
را ه ساده تر که که تقریباً امکان همنام شدنش صفر هست
البته من پیاز داقشو زیاد می کنم تو هر کدوم رو که می خوای استفاده کن البته milisecend رو هتمن به کار ببر چون مهمه



string name = DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + DateTime.Now.Millisecond + filename;


درضمن اسم اصلی فایل رو تو یه فیلد دیگه نگه دار که اگه خواستی به کاربر نشونش بدی ضایع نشه:لبخند:

merlin_vista
پنج شنبه 12 مهر 1386, 00:10 صبح
میتونی از Online Convertor ها استفاده کنی





{
string Filepath = "Userpic/user.jpg";
System.IO.File.Delete(Server.MapPath(FilePath));

myFile = file.PostedFile;
string Filename = "username" + System.IO.Path.GetExtension(myFile.FileName);
}

موفق باشید.

اول :
Online Convertor را از کجا گیر بیارم !!

دوم :
file.PostedFile میشه کار اینا بگین

سوم :
راجب این قسمت "string Filename = "username" + System.IO.Path.GetExtension(myFile.FileName); " یه توضیحی بدین

sin
پنج شنبه 12 مهر 1386, 10:12 صبح
web developer عزیز من هم این مشکل رودارم میشه توضیح بدید
ممنون

web developer
پنج شنبه 12 مهر 1386, 11:10 صبح
اول :
Online Convertor را از کجا گیر بیارم !!


از سرچ تو گولیا (http://www.gooliya.com) !




دوم :
file.PostedFile میشه کار اینا بگین


فایلی که بوسیله input برای upload انتخاب شده!



سوم :
راجب این قسمت "string Filename = "username" + System.IO.Path.GetExtension(myFile.FileName); " یه توضیحی بدین

تو این کد اسم فایل upload شده رو به username.jpg یا username.gif تبدیل می کنیم.
در واقع به جای "username" هر متغیری میخوای بذار.

mr_mtc
شنبه 14 مهر 1386, 15:22 عصر
به نظرم به جای این کارا اسم کاربر رو با اسم عکس یکی کنی بهتره

راستی سایت جالبی داری

merlin_vista
دوشنبه 16 مهر 1386, 15:00 عصر
را ه ساده تر که که تقریباً امکان همنام شدنش صفر هست
البته من پیاز داقشو زیاد می کنم تو هر کدوم رو که می خوای استفاده کن البته milisecend رو هتمن به کار ببر چون مهمه



string name = DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day + DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + DateTime.Now.Millisecond + filename;
درضمن اسم اصلی فایل رو تو یه فیلد دیگه نگه دار که اگه خواستی به کاربر نشونش بدی ضایع نشه:لبخند:

آقا کد من برای آپلود عکس توسط کاربر اینه :

//آپلود عکس
if (this.PicFile.PostedFile.ContentLength > 300 * 150)
{
this.lblmaseg.Text = "";
this.lbleror.Text = "";
this.lbleror.Text = " تصویر بزرگ است باید اندازه آن برابر 150*300 باشد";
return;
}
if (this.PicFile.PostedFile.FileName == "")
{
this.lblmaseg.Text = "";
this.lbleror.Text = "";
this.lbleror.Text = "عکس انتخاب نشده است";
return;
}
string FileName = this.PicFile.PostedFile.FileName;
System.IO.FileInfo FI = new System.IO.FileInfo(FileName);
string Path = this.Request.PhysicalApplicationPath;

System.IO.FileStream FS = new System.IO.FileStream(Path + "userpic\\" + FI.Name, System.IO.FileMode.Create);
System.IO.Stream St = this.PicFile.PostedFile.InputStream;

byte[] b = new byte[St.Length];

St.Read(b, 0, b.Length);
FS.Write(b, 0, b.Length);

St.Close();
FS.Close();

//

حالا کد آقای Abadanboy را من کجای این کد برای تغغیر نام بنویسم !! میشه بگید و برام کد کامل را بگزارید ! :تشویق::چشمک::قلب:

abadanboy
دوشنبه 16 مهر 1386, 15:23 عصر
مثلاً

string FileName =DateTime.Now.Year + DateTime.Now.Month + DateTime.Now.Day + this.PicFile.PostedFile.FileName;

حلا جا fi.name بزار FileName


System.IO.FileStream FS = new System.IO.FileStream(Path + "userpic\\" + FileName , System.IO.FileMode.Create);

merlin_vista
چهارشنبه 18 مهر 1386, 15:18 عصر
آقا من برای اینکه اول عکس مربوط به کاربر پاک شود و بعد سطر مربوط به آن در دیتابیس این کد را نوشتم !! ( از نوشتن چیزهای اضافی خوداری کردم )

string Path = this.Request.PhysicalApplicationPath;
Dsmembers.SelectCmeRow dr = this.dsmembers1.SelectCme.FindByid(ID);
System.IO.File.Delete(Path + dr.userpic);
dr.Delete();

ولی بعد از کلیک بر روی دکمه حذف این پیغام را داد !!

Access to the path 'C:\Inetpub\wwwroot\asannet\userpic\Man.jpg' is denied.

حالا میشه بگید مشکل از چیه و روش حل آن چگونه است !

abadanboy
چهارشنبه 18 مهر 1386, 15:26 عصر
برو رو فولدرت کلیک راست کن و بعد تو security مجوز حذف رو به یوزر asp.net بده یادت باشه یوزر asp.net

merlin_vista
چهارشنبه 18 مهر 1386, 16:07 عصر
بعد تو سرور چیکار کنم !

Nightbat
پنج شنبه 19 مهر 1386, 12:43 عصر
بعد تو سرور چیکار کنم !
با هاست تماس بگیر