PDA

View Full Version : مبتدی: مشكل در چك كردن فرمت و حجم عكس در آپلود عكس



hamideh89
جمعه 09 مهر 1389, 10:32 صبح
من يه برنامه نوشتم كه وقتي كاربر دكمه ي تاييد رو مي زنه كد ملي رو چك مي كنه كه تكراري نباشه و فرمت و سايز عكس رو هم چك مي كنه .
ولي مشكلم اينه كه خوب عمل نمي كنه يعني شرط فرمت و سايز رو هر وقت دلش بخواد حساب مي كنه و گهگاهيم اگه كد ملي تكراري باشه از فزمت و حجم عكس ايراد مي گيره حتي اگر فرمت و سايز درست باشند.
اينم قطعه كدم.



protected void Button1_Click(object sender, EventArgs e)
{
OleDbConnection con = new OleDbConnection(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\program\porojeha\asl\asl\App_Data\info.m db");
string str = string.Empty;
DateTime dt = new DateTime();
dt = DateTime.Now;
str = dt.Day.ToString() + dt.Hour.ToString() + dt.Minute.ToString() + dt.Second.ToString() + dt.Millisecond.ToString();
code = str;

if (FileUpload1.HasFile)
{

if (FileUpload1.PostedFile.ContentLength < 10000)
{
FileUpload1.SaveAs(Server.MapPath("~\\image\\" + code + ".jpg"));
Image2.ImageUrl = ("~\\image\\" + code + ".jpg");
}
else
{
Label18.Text = "";
Label18.Text = "حجم عكس استاندارد نيست";

}
if (FileUpload1.PostedFile.ContentType != ".jpg")
{
Label19.Text = "";
Label19.Text = "فرمت عكس استاندارد نيست";

}
}
string com = "select [icode] from [info]";
objda.SelectCommand = new OleDbCommand(com, con);
DataSet objdataset = new DataSet();
objda.Fill(objdataset, "info");
DataView objdataview = new DataView(objdataset.Tables["info"]);
bool result = false;
int i;
for (i = 0; i < objdataview.Count; i++)
{
if (objdataview[i].Row[0].ToString() == TextBox4.Text)
{
result = true;
}
}
if (result == true)
Label14.Text = "کد ملی تکراری است";
else
{
Label14.Text = "";
string str1 = "insert into info(nname,lname,bday,bmonth,byear,inumber,icode,d ocument,dname,rname,tell,email,city,address,rcode) values('" + TextBox1.Text + "','" + TextBox2.Text + "','" + DropDownList5.Text + "','" + DropDownList6.Text + "','" + DropDownList7.Text + "','" + TextBox3.Text + "','" + TextBox4.Text + "','" + DropDownList2.Text + "','" + DropDownList3.Text + "','" + DropDownList4.Text + "','" + TextBox5.Text + "','" + TextBox6.Text + "','" + TextBox7.Text + "','" + TextBox8.Text + "','" + code + "')";
OleDbCommand cmd = new OleDbCommand(str1, con);
con.Open();
cmd.ExecuteNonQuery();
con.Close();
Label15.Text = "كاربر گرامي اطلاعات شما با موفقيت به ثبت رسيد";

Session["my session1"] = Label15.Text;
Label16.Text = code;
Session["my session2"] = Label16.Text;
string stri = string.Empty;
stri = "rahgiri.aspx";
Response.Redirect(stri);
}

}

ramin149
جمعه 09 مهر 1389, 12:23 عصر
http://www.barnamenevis.org/forum/showthread.php?p=1114198#post1114198

hamideh89
جمعه 09 مهر 1389, 15:29 عصر
http://www.barnamenevis.org/forum/showthread.php?p=1114198#post1114198
ممنون دوست عزيز ولي من نميخام كليت كدم به هم بخوره . ميشه همين رو برام اصلاح كنيد؟

raha2400
شنبه 10 مهر 1389, 00:33 صبح
خوب در مورد چک کردن فرمت عکس که صد در صد کد رو اشتباه نوشتی چون مثلا اگه یه عکس jpg رو آپلود کنی اونو رو به شکل image/jpeg میبینه یعنی اگر از همین کد استفاده میکنی باید به صورت

if ( FileUpload1.PostedFile.ContentType !="image/jpeg")
باشه و راه بهتر هم اینه که اول filename رو بگیری و بعد فرمت اونو رو به درستی با هر چیزی که میخوای مقایسه کنی .

string filename = FileUpload1.PostedFile.FileName;
وبعد

System.IO.Path.GetExtension(filename) != ".jpg"
در ضمن اگه یه بار به label مقدار بدی کافیه و لازم نیست اول برابر "" قرارش بدی .
اگر تا اینجا حل شد که هیچی اما در مورد نحوه آپلود با filemap من باهاش کار نکردم و از روش دیگه ای استفاده میکنم .
در مورد نحوه چک کردن کد ملی هم بگم از روش خیلی بدی استفاده کردی اینکار باید در دیتابیس انجام بشه و تعداد نتیجه ها در دیتاسورس شمرده میشه اگر صفر باشه پیا نشده و گرنه پیدا شده و استفاده از حلقه for در برنامه اصلا جالب نیست.

pedram_ns
شنبه 10 مهر 1389, 09:07 صبح
ببینید شما ابتدا حجم رو چک کردید و در صورت مجاز بودن حجم، تصویر در مسیر شما ذخیره می شه و دیگه فرمت رو چک نمی کنه.
می تونید این دو کار رو (چک کردن حجم و فرمت رو ) همزمان انجام بدید.

اوبالیت به بو
شنبه 10 مهر 1389, 16:52 عصر
سلام

برای چک کردن فرمت و سایز عکس:


//Get and check file extensions
string[] ValidExtensions = {".jpg",".bmp",".gif"};
string FileExtensions = System.IO.Path.GetExtensions(FileUpload1.PostedFil e.FileName);

if (Arrays.IndexOf (ValidExtensions,FileExtensions)<0)
return "Invalid File extensions";
//Get and check file size
long Size = FileUpload1.PostedFile.ContentLength;
Size = Size / 1024; //Convert to KB
if (Size > 120)
return "File must < 120 KB";

khani_prog
شنبه 10 مهر 1389, 20:50 عصر
برای چک کردن سایز از کد زیر در کنترل FileUpload استفاده کنید که سایز فایل را به شما می دهد

if (FileUpload1.FileBytes.Length > 1024)
{
args.IsValid = false;
}
else
{
args.IsValid = true;
}

hamideh89
دوشنبه 12 مهر 1389, 22:08 عصر
من يه چند روزي نبودم از همه ي دوستان ممنون اما مشكلم حل نشد:ناراحت:
من نمي دونم ايم چه ارتباطي با كد ملي داره كه ايراد ميگيره