PDA

View Full Version : مشکل Server.MapPath کلاس



ramin149
جمعه 02 مهر 1389, 12:31 عصر
من به جای خط زیر در کلاس باید چه چیزی بنویسم اخه روی server خطا می ده



string mypath = Server.MapPath(".") + "\\userpicher";

profnami
جمعه 02 مهر 1389, 12:46 عصر
دوست عزيز شما اول بگيد ميخوايد چيكار كنيد ؟
شايد راههاي بهتري باشه . به هر حال من هيچ وقت نديدم كه اين كد به اين شكل نوشته بشه

ramin149
جمعه 02 مهر 1389, 12:49 عصر
من با این کد عکس مورد نظرم رو upload می کنم ولی حالا می خوام داخل کلاس بنویسم ولی کد بالا رو خطا می ده .



string mypath = Server.MapPath(".") + "\\userpicher";
string [] validextention={".jpg" , ".png" , ".bnp",".jpeg"};
//GetExtension pasvand file ro midahad
string x = System.IO.Path.GetExtension(FileUpload1.PostedFile .FileName);
if ( Array.IndexOf(validextention,x.ToLower()) <0 )
{
Response.Write("you seleted invalid type of image for uploading");
return;
}


long sizefile = FileUpload1.PostedFile.ContentLength;
sizefile = sizefile / 1024;
if (sizefile > 200)
{
Response.Write("invalid size image uploading");
return;
}


string filename = System.IO.Path.GetFileName(FileUpload1.PostedFile. FileName);
//Exists موجود هست یا نیست
while(System.IO.File.Exists(mypath+"\\"+filename))
{
int c = filename.Length - x.Length;
filename = filename.Insert(c, "3");

}




FileUpload1.PostedFile.SaveAs(mypath + "\\" + filename);
Response.Write("youfileuploaded");
}

profnami
جمعه 02 مهر 1389, 13:16 عصر
به اين صورت بنويسيد :


bookFileUpload.SaveAs(Server.MapPath("~/Images/Books/" + bookFileUpload.FileName));

ramin149
جمعه 02 مهر 1389, 13:21 عصر
من با کلاس زیاد کار نکردم و هنوز مشکل داره من کد بالا رو به صورت زیر نوشتم ولی هنوز مشکل داره اگر میشه کمکم کنید و جاهایی رو که قرمز کردم رو خطا می ده .


public photos(string fileupload , string error)
{
string mypath = fileupload.SaveAs(Server.MapPath("~/Images/Books/" + fileupload.FileName));
// Server.MapPath(".") + "\\userpicher";
string [] validextention={".jpg" , ".png" , ".bnp",".jpeg"};
//GetExtension pasvand file ro midahad
string x = System.IO.Path.GetExtension(fileupload.PostedFile. FileName);
if ( Array.IndexOf(validextention,x.ToLower()) <0 )
{
error="you seleted invalid type of image for uploading";
return;
}


long sizefile = fileupload.PostedFile.ContentLength;
sizefile = sizefile / 1024;
if (sizefile > 200)
{
error="invalid size image uploading";
return;
}


string filename = System.IO.Path.GetFileName(fileupload.PostedFile.F ileName);
//Exists موجود هست یا نیست
while(System.IO.File.Exists(mypath+"\\"+filename))
{
int c = filename.Length - x.Length;
filename = filename.Insert(c, "3");

}




fileupload.PostedFile.SaveAs(mypath + "\\" + filename);
error="youfileuploaded";
}

omid66
جمعه 02 مهر 1389, 13:27 عصر
سلام
دوستان پیشنهاد درستی دادند ولی یک نکته رو نگفتن که اگر متدی که استفاده می کنی static باشه باید اینجوری بنویسی:

HttpContext.Current.Server.MapPath("~/Content/Images/Linkestan/" + ImageName)

profnami
جمعه 02 مهر 1389, 13:33 عصر
داريد خيلي سختش ميگيريد . شما كدي رو كه من نوشتم خونديد ؟
من كد ذخيره ي فايل رو به شما دادم . اين متد رشته برگشت نميده . بنابراين شما كاملا اشتباه عمل كرديد .
ببينيد كد هاي خودتون رو بيخيال شيد .




if (FileUpload1.HasFile)
{
string ext = Path.GetExtension(FileUpload1.FileName);
string[] validextention = { ".jpg", ".png", ".bnp", ".jpeg" };
if (validextention.Contains(ext))
{
FileUpload1.SaveAs("~/مسير مورد نظر شما" + FileUpload1.FileName);
}
}



لطفا در خوندن كدها دقت كنيد

ramin149
جمعه 02 مهر 1389, 13:37 عصر
خیلی ممنون ولی یه مشکل کوچیک دیگه هم دارم
من در کد زیر فایل آپلودم رو به صورت زیر تعریف کردم و از نوع string که بعدن داخل صفحه صداش بزنم



public photos(string fileupload , string error)
}
{

به نظر شما درسته ولی بعدش برای کد زیر خطا می ده



string x = System.IO.Path.GetExtension(fileupload.PostedFile. FileName);
if ( Array.IndexOf(validextention,x.ToLower()) <0 )
{
error="you seleted invalid type of image for uploading";
return;
}

profnami
جمعه 02 مهر 1389, 14:06 عصر
دوست عزيز من كد رو بهتون دادم . لطفا دقيق بگيد هدف شما از اين كار چيه تا بهتر راهنماييتون كنم

ramin149
جمعه 02 مهر 1389, 16:02 عصر
دوست عزيز من كد رو بهتون دادم . لطفا دقيق بگيد هدف شما از اين كار چيه تا بهتر راهنماييتون كنم

هدف اصلی من اینه که کد زیر رو به کلاس تبدیل کنم و چون اولین بارم هست مشکل دارم و کدی که بدون کلاس کار می کنه و کارش اینه که عکس رو از فایل آپلود میگیره و درخل فایلی ذخیره میکنه .



protected void Button1_Click(object sender, EventArgs e)
{
string mypath = Server.MapPath(".") + "\\userpicher";
string [] validextention={".jpg" , ".png" , ".bnp",".jpeg"};
//GetExtension pasvand file ro midahad
string x = System.IO.Path.GetExtension(FileUpload1.PostedFile .FileName);
if ( Array.IndexOf(validextention,x.ToLower()) <0 )
{
Response.Write("you seleted invalid type of image for uploading");
return;
}


long sizefile = FileUpload1.PostedFile.ContentLength;
sizefile = sizefile / 1024;
if (sizefile > 200)
{
Response.Write("invalid size image uploading");
return;
}


string filename = System.IO.Path.GetFileName(FileUpload1.PostedFile. FileName);
//Exists موجود هست یا نیست
while(System.IO.File.Exists(mypath+"\\"+filename))
{
int c = filename.Length - x.Length;
filename = filename.Insert(c, "3");

}




FileUpload1.PostedFile.SaveAs(mypath + "\\" + filename);
Response.Write("youfileuploaded");
}

profnami
جمعه 02 مهر 1389, 16:12 عصر
ببينيد شما نميتونيد fileupload رو به رشته تبديل كنيد . شما فقط ميتونيد در داخل صفحه اي كه فايل آپلود هست عكس رو ذخيره كنيد . حالا چرا ميخوايد به داخل كلاس بفرستيد ؟مسير عكس به چه درد شما ميخوره در داخل كلاس؟
--------------------
ميتونيد اين رو به كلاس بفرستيد :




server.mappath("~/مسير مورد نظر شما" + FileUpload1.FileName).tostring()

ramin149
جمعه 02 مهر 1389, 16:44 عصر
اخه من یه 10 بار باید این کار رو داخل برنامه ام انجام بدم برای همین گفتم که داخل کلاس بنویسم مشکل من بیشتر روی فایل آپلود که نمی دونم چه شکلی داخل کلاس تعریف کنم ؟؟
حالا مسیر رو میشه یه کاری کنم . با کد شما و کد دوستان ولی فایل آپلود رو هنوز جواب نگرفتم .

Himalaya
جمعه 02 مهر 1389, 19:41 عصر
توی کلاس


using System.Web.UI.WebControls;
using System.Web.UI;



public class Class1
{
private FileUpload fileup = new FileUpload();
public Class1(FileUpload file)
{
this.fileup = file;
}
public void Upload(Page page)
{
fileup.SaveAs(page.Server.MapPath("~/photo/" + fileup.FileName));
page.Response.Write("<script>alert('Ok')</script>");
}
}


اینم کد دکمه واسه آپلود تو صفحه Default


protected void Button1_Click(object sender, EventArgs e)
{
Class1 a = new Class1(FileUpload1);
a.Upload(this.Page);
}