PDA

View Full Version : سوال: مشکل با آپلود عکس



asiehmohammadian
سه شنبه 12 خرداد 1394, 10:39 صبح
سلام به همه دوستان
من یک فایل آپلود دارم که کدش به صورت زیر هست :

protected void btnupload_Click(object sender, EventArgs e)
{
string fileName = upload.PostedFile.FileName;
string fileExtension = System.IO.Path.GetExtension(fileName);
string fileMimeType = upload.PostedFile.ContentType;
int fileLengthInKB = upload.PostedFile.ContentLength / 1024;
string[] matchExtension = { ".jpg", ".png", ".gif" };
string[] matchMimeType = { "image/jpeg", "image/png", "image/gif" };


if (upload.HasFile)
{


if (matchExtension.Contains(fileExtension) && matchMimeType.Contains(fileMimeType))
{
if (fileLengthInKB <= 1024)
{
upload.SaveAs(Server.MapPath(@"upload/" + fileName));


System.Drawing.Size S = System.Drawing.Image.FromFile(Server.MapPath(@"upload/" + fileName)).Size;
if (S.Width == 29 && S.Height == 29)
{
SqlCommand cmd = new SqlCommand("insert into HELP_TITLE (HETI02,HETI03) values (@HETI02,fileName)", cn);
cn.Open();
}
else
{
File.Delete(Server.MapPath(@"upload/" + fileName));
Lmsg.Text = "اندازه عکس شما باید 29 در 29 باشد";
}


Lmsg.Text = "آپلود با موفقیت انجام شد";
}
else
{
Lmsg.Text = "حجم عکس شما باید حداکثر 1 مگابایت باشد";
}


}
else
{
Lmsg.Text = "باشد.jpg,.png,.gif فرمت عکس شما باید ";
}
}
else
{
Lmsg.Text = " لطفا عکس خود را انتخاب کنید ";
}
cn.Close();
}


درواقع میخوام هم سایزعکس چک بشه ، هم حجم عکس وهم فرمت عکس
آپلود فایل مشکل نداره وفایل آپلود میشه
دوتا مشکل دارم :
1- داخل جدول درج نمیشه
2-من میخوام اگر اندازه عکس درست نبود عکس پاک بشه وکدی که برای این قسمت نوشتم درست کار نمیکنه

دوستان خواهش میکنم لطف کنید وراهنماییم کنید ممنونم

salibsatan
سه شنبه 12 خرداد 1394, 11:47 صبح
insert into HELP_TITLE (HETI02,HETI03) values (@HETI02,fileName)

اولا فکر کنم منظورتون @filename بوده.بعدم الان @heti02 و @filename کجا تعریف شدن؟
در مورد حذف عکس هم به نظر کد سالمه.باید کار کنه.آدرس رو هم در save و هم در delete کامل بدین

Server.MapPath(@"~/upload/" + fileName)

asiehmohammadian
سه شنبه 12 خرداد 1394, 13:55 عصر
ممنونم بخاطر اشکالاتی که ازم گرفتین کدم درست شد
فقط یک مشکل دیگه دارم اونم اینه که وقتی کاربر داره یک عکس تکراری ودرج میکنه باید چجوری بهش پیغام بدم؟

salibsatan
چهارشنبه 13 خرداد 1394, 11:07 صبح
نامش رو می تونید چک کنید تکراری نباشه اما پردازش خود عکس برای تکراری نبودن پروژه عظیمیه.
منظورتون از عکس تکراری چیه دقیقا؟

mahan206
پنج شنبه 14 خرداد 1394, 10:54 صبح
سلام دوست عزیز من به این کد نیاز دارم میشه بودونم اخرش چطور نوشتیش که کار کرد

asiehmohammadian
جمعه 15 خرداد 1394, 19:20 عصر
نامش رو می تونید چک کنید تکراری نباشه اما پردازش خود عکس برای تکراری نبودن پروژه عظیمیه.
منظورتون از عکس تکراری چیه دقیقا؟
ممنونم از لطفتون
منظورم همونه که نام تکراری ثبت نکنه
الان درج نمیکنه اما نمیدونم باید چجوری بهش پیغام خطا بدم

salibsatan
شنبه 16 خرداد 1394, 08:16 صبح
public static string GetFileName(FileUpload fu)
{
string file = fu.FileName;
if (!fu.HasFile)
return "";


int i = 0;
string filepath = System.Web.HttpContext.Current.Server.MapPath("~/UploadedFiles/") + file;
while (File.Exists(filepath))
{
filepath = System.Web.HttpContext.Current.Server.MapPath("~/UploadedFiles/") + i.ToString() + file;
i++;
}
System.Drawing.Bitmap bmpPostedImage = new System.Drawing.Bitmap(fu.PostedFile.InputStream);
SaveImageFile(bmpPostedImage, filepath);
//fu.PostedFile.SaveAs(filepath);
return Path.GetFileName(filepath);


}

اینم هلو برو تو گلو در خدمت شما.فقط فایل آپلودت رو به این تابع پاس بده.
اگر متوجه نشدی بگو توضیح بدم

asiehmohammadian
شنبه 16 خرداد 1394, 09:21 صبح
یک دنیا ممنونم از لطفتون
اگر لطف کنید توضیح مختصریم بدید ممنون میشم

salibsatan
شنبه 16 خرداد 1394, 10:34 صبح
ورودی تابع شی فایل آپلود هست.چک می کنه فایل داره یا نه.اگه فایل نداشت رشته خالی برمیگردونه.اگه فایل داشت، چک می کنه توی دایرکتوری مورد نظر هم اسم فایل وجود داره یا نه.اگه وجود نداشت، فایل رو ذخیره می کنه و برمیپردونه.ولی اگر فایل همنام وجود داشت، اول اسم فایل یک اضافه میکنه.باز وجود داشت، اول اسم فایل 2 اضافه می کنه.انقدر این اعداد رو اضافه می کنه تا تکراری نباشه.بعد سیو می کنه و اسم فایل رو برمیگردونه.
یعنی ورودی تابع یک fileupload و خروجی یک رشته هست که آدرس محل ذخیره شدن عکس رو برمیگردونه که می تونید توی بانک ذخیره کنید.
و تا اونجایی که چک کردم، محدودیتی در مورد پسوند فایل های ارسالی نداره.یعنی mp4 و یا png و ... رو هم می تونید با همین تابع ذخیره کنید.