Проблемы управления fileupload PostedFile
у меня есть страница регистрации, на которой я даю возможность пользователю загрузить изображение
пользователь tablename
Идентификатор инт
Электронная почта varchar(500)
Пароль varchar(500)
Имя варчар(500)
Страна варчар(500)
LastLogin datetime
RegisterDate datetime
Описание Varchar(500)
ImageName varchar(500) разрешить нули
когда я загрузить изображение изображение правильно загружен, но не установлен валидатор, чтобы контролировать загрузить изображение разрешить значения NULL в столбец имя_образа
когда пользователь не загружает изображение приходит ошибка
StartIndex не может быть меньше нуля.
код здесь
protected void Button1_Click(object sender, EventArgs e) { string chkUser = "Select * FROM [User] where Email='" + TextBox2.Text + "'"; dt = dbClass.ConnectDataBaseReturnDT(chkUser); if (dt.Rows.Count > 0) { Response.Write("<script language='javascript'>alert( 'Already Exsist ' )</script>"); } else { if (UploadUserPhoto.PostedFile != null) { string myMap = MapPath("~/").ToLower(); Random r = new Random(); int next = r.Next(); string ImageName = UploadUserPhoto.PostedFile.FileName; // ToSaveImageName = DateTime.Now.ToString("yyyy-MM-ddTmm:hh:ss"); //ToSaveImageName.Replace('-', '1'); //ToSaveImageName.Replace(':', '2'); //Directory.CreateDirectory(myMap + ToSaveImageName); sImageFileExtension = ImageName.Substring(ImageName.LastIndexOf(".")).ToLower();//error is here when i not upload the image if (sImageFileExtension == ".gif" || sImageFileExtension == ".png" || sImageFileExtension == ".jpg" || sImageFileExtension == ".jpeg" || sImageFileExtension == ".bmp") { string ImageSaveURL = myMap + "UserImage/" + next + sImageFileExtension; try { UploadUserPhoto.PostedFile.SaveAs(ImageSaveURL); string RegisterQuery = "INSERT INTO [User] (Email,Password,Name,Country,Gender,Month,Date,Year,Description,ImageName) VALUES('" + TextBox2.Text + "','" + TextBox3.Text + "','" + TextBox4.Text + "','" + TextBox5.Text + "','" + DropDownList1.Text + "','" + DropDownList3.Text + "','" + DropDownList2.Text + "','" + DropDownList4.Text + "','" + TextBox1.Text + "','" + next + sImageFileExtension + "')"; dbClass.ConnectDataBaseToInsert(RegisterQuery); Response.Redirect("~/Login.aspx"); } catch (Exception ex) { } } else { } } else { ToSaveImageName = "No"; sImageFileExtension = "Image"; } }
[edit] опция"игнорировать HTML..." отключена, "ошибка в коде................" заменен на более описательный предмет - OriginalGriff[/edit]
Ed Nutting
Если ImageName был пустым, потому что не было никакой загрузки файла, то ImageName.LastIndexOf(".") будет равен -1, так как для него не будет индекса. Поэтому ImageName.Substring(-1) должен выдавать ошибку, потому что у вас не может быть подстроки из индекса -1! :P
Edit: вероятно, вам следует проверить не только UploadUserPhoto.HasFile, но также и то, является ли имя файла пустым, просто чтобы убедиться, что вы не получаете ошибок.