protected string GetImageUrl(SparePartImage spi) { using (System.IO.MemoryStream stm = new System.IO.MemoryStream(spi.ImageBody.ToArray())) { using (System.Drawing.Image img = System.Drawing.Image.FromStream(stm)) { // получаем размер загруженного фото ImageHeight = img.Height; } } return UrlManager.GetSparePartDefectImageUrl(spi.Manufacturer + ',' + spi.PartNumber + ',' + spi.SupplierID + ',' + spi.ImageNumber); }
protected void _btnSave_Click(object sender, EventArgs e) { if (Page.IsValid) { using (var dc = new DCFactory<StoreDataContext>(false)) { TextBox txtImageNumber = new TextBox(); TextBox txtDescription = new TextBox(); FileUpload fuImage = new FileUpload(); // Выполняем в транзакции dc.DataContext.Connection.Open(); dc.DataContext.Transaction = dc.DataContext.Connection.BeginTransaction(); try { for (int i = 1; i <= 5; i++) { SetControls(i, out txtImageNumber, out txtDescription, out fuImage); if (fuImage.HasFile) { SparePartImage spiSource = dc.DataContext.SparePartImages.SingleOrDefault(item => item.Manufacturer == _txtManufacturer.Text.Trim() && item.PartNumber == _txtPartNumber.Text.Trim() && item.SupplierID == Convert.ToInt32(_ddlSupplierID.SelectedValue) && item.ImageNumber == Convert.ToInt32(txtImageNumber.Text)); if (spiSource != null) // т.е. пытаемся обновить существующую запись { // сначала удаляем старую, т.к. Primary Key на полях не позволит их обновить, только пересоздать dc.DataContext.SparePartImages.DeleteOnSubmit(spiSource); dc.DataContext.SubmitChanges(); } // создаем новую запись SparePartImage spi = new SparePartImage(); spi.Manufacturer = _txtManufacturer.Text.Trim(); spi.PartNumber = _txtPartNumber.Text.Trim(); spi.SupplierID = Convert.ToInt32(_ddlSupplierID.SelectedValue); spi.ImageNumber = Convert.ToInt32(txtImageNumber.Text); spi.Description = txtDescription.Text; spi.ImageBody = fuImage.FileBytes; dc.DataContext.SparePartImages.InsertOnSubmit(spi); } } dc.DataContext.SubmitChanges(); dc.DataContext.Transaction.Commit(); _lblInfo.Text = "Фотографии успешно сохранены."; _lblInfo.Style.Add(HtmlTextWriterStyle.Color, "Green"); } catch (Exception ex) { dc.DataContext.Transaction.Rollback(); _lblInfo.Text = "Ошибка при сохранении фотографий!"; _lblInfo.Style.Add(HtmlTextWriterStyle.Color, "Red"); } } // перенаправляем на список всех фотографий деталий HttpContext.Current.Response.Redirect("ListSparePartImagesMgmt.aspx"); } }