Member 10690878 Ответов: 2

FileUpload сохранить старый образ при использовании инструкции update SQL


Всем привет

Приведенный ниже код работает нормально, но я смотрю на тот случай, если пользователь не выбрал новую фотографию, то код не обновит текущее изображение. Приведенный ниже код, когда я нажимаю на кнопку обновления (и сохраняю загрузку файла пустой), он не показывает никакого изображения, но в настоящее время есть старое изображение.


 <asp:FormView ID="EditUsrInfoFVw" runat="server">
                         <ItemTemplate>
                           <tr>
                       <td>First Name:</td>
                       <td><asp:TextBox ID="FNEDTTXTBX" runat="server" CssClass="form-control" Text='<%# Bind("FN") %>'></asp:TextBox></td>
                     </tr>
                     <tr>
                       <td>Last Name:</td>
                       <td> <asp:TextBox ID="LNEDTTXTBX" runat="server" CssClass="form-control" Text='<%# Bind("LN") %>'> </asp:TextBox></td>
                     </tr>
                     <tr>
<tr>
                       <td>Personal Image:</td>
                       <td>
                           <asp:FileUpload ID="EditImgFUP" runat="server" CssClass="form-control" />
                       </td>
                     </tr>
</ItemTemplate>
                         </asp:FormView>


 protected void editHPPersInfobtn_Command(object sender, CommandEventArgs e)
        {
            EditUsrPan.Visible = false;
            showusrinfo.Visible = true;


            SqlConnection EduSRiNFOCon = new SqlConnection(sc);
            SqlCommand EditUsrInfocmd = new SqlCommand();

            if (Session["UsrNme"] != null)
            {


                string EditUsrInfoSQL = @"Update UserInfo SET  FN=@FN, LN=@LN, Password=@Password, RePass=@RePass, Website=@Website, Post=@Post, Email=@Email,
Address=@Address, TeleNum=@TeleNum, Facebook=@Facebook, GooglePlus=@GooglePlus, Twitter=@Twitter, Img=@img Where  UID=@UID";

                EditUsrInfocmd.Connection = EduSRiNFOCon;
                EditUsrInfocmd.CommandType = CommandType.Text;
                EditUsrInfocmd.CommandText = EditUsrInfoSQL;
                EditUsrInfocmd.Parameters.AddWithValue("@UID", ((Label)EditUsrInfoFVw.FindControl("UIDEDLabel")).Text);
                EditUsrInfocmd.Parameters.AddWithValue("@TeleNum", ((TextBox)EditUsrInfoFVw.FindControl("TeleEDTTXTBX")).Text);
                EditUsrInfocmd.Parameters.AddWithValue("@Facebook", ((TextBox)EditUsrInfoFVw.FindControl("FaceEDTTXTBX")).Text);
                EditUsrInfocmd.Parameters.AddWithValue("@GooglePlus", ((TextBox)EditUsrInfoFVw.FindControl("GoogEDTTXTBX")).Text);
                EditUsrInfocmd.Parameters.AddWithValue("@Twitter", ((TextBox)EditUsrInfoFVw.FindControl("TwitEDTTXTBX")).Text);
                EditUsrInfocmd.Parameters.AddWithValue("@img", ((FileUpload)EditUsrInfoFVw.FindControl("EditImgFUP")).FileName);

               var fileUpload = EditUsrInfoFVw.FindControl("EditImgFUP") as FileUpload;

               if (fileUpload != null && fileUpload.HasFile)
               {
                   if (fileUpload.PostedFile.ContentType.ToLower().StartsWith("image/"))
                   {
                       fileUpload.SaveAs(Server.MapPath("~/images/users/" + fileUpload.FileName));
                   }
                   else
                   {
                       // Not an image, handle accordingly
                   }
               }
                EduSRiNFOCon.Open();
                int result = EditUsrInfocmd.ExecuteNonQuery();
                if (result > 0)
                {
                    // Updated successfully;
                }

            }



            ReHPPersInfo();
        }

Arasappan

во время первой подачи фотография может быть загружена или нет

2 Ответов

Рейтинг:
19

Arasappan

Ваша проблема заключается в том, что пользователь не выбирает изображение,
ваш код таков

if (fileUpload != null && fileUpload.HasFile)
               {
                   if (fileUpload.PostedFile.ContentType.ToLower().StartsWith("image/"))
                   {
                       fileUpload.SaveAs(Server.MapPath("~/images/users/" + fileUpload.FileName));
                   }
                   else
                   {
                       // Not an image, handle accordingly
                   }
               }
hence the user must select an image to execute on the above condition.
the else in the if (fileUpload != null && fileUpload.HasFile) совершенно бесполезен.


Просто U может понять, что означает, что вам нужно два запроса, один из которых предназначен для с изображением, другой-для без изображения .запрос u написан только тогда, когда пользователь выбирает изображение..

ключик
if(fileupload.HasFile)
{
запрос с обновлением изображения
}
еще
{
запрос без обновления изображения
}


if (Session["UsrNme"] != null)
            {


                string EditUsrInfoSQL = @"Update UserInfo SET  FN=@FN, LN=@LN, Password=@Password, RePass=@RePass, Website=@Website, Post=@Post, Email=@Email,
Address=@Address, TeleNum=@TeleNum, Facebook=@Facebook, GooglePlus=@GooglePlus, Twitter=@Twitter, Img=@img Where  UID=@UID";


                string EditUsrInfoSQLWithoutImage = @"Update UserInfo SET  FN=@FN, LN=@LN, Password=@Password, RePass=@RePass, Website=@Website, Post=@Post, Email=@Email,
Address=@Address, TeleNum=@TeleNum, Facebook=@Facebook, GooglePlus=@GooglePlus, Twitter=@Twitter Where  UID=@UID"; 
 //img=@img not to be use
                EditUsrInfocmd.Connection = EduSRiNFOCon;
                EditUsrInfocmd.CommandType = CommandType.Text;
                EditUsrInfocmd.CommandText = EditUsrInfoSQL;
                EditUsrInfocmd.Parameters.AddWithValue(&quot;@UID&quot;, ((Label)EditUsrInfoFVw.FindControl(&quot;UIDEDLabel&quot;)).Text);
                EditUsrInfocmd.Parameters.AddWithValue(&quot;@TeleNum&quot;, ((TextBox)EditUsrInfoFVw.FindControl(&quot;TeleEDTTXTBX&quot;)).Text);
                EditUsrInfocmd.Parameters.AddWithValue(&quot;@Facebook&quot;, ((TextBox)EditUsrInfoFVw.FindControl(&quot;FaceEDTTXTBX&quot;)).Text);
                EditUsrInfocmd.Parameters.AddWithValue(&quot;@GooglePlus&quot;, ((TextBox)EditUsrInfoFVw.FindControl(&quot;GoogEDTTXTBX&quot;)).Text);
                EditUsrInfocmd.Parameters.AddWithValue(&quot;@Twitter&quot;, ((TextBox)EditUsrInfoFVw.FindControl(&quot;TwitEDTTXTBX&quot;)).Text);
                EditUsrInfocmd.Parameters.AddWithValue(&quot;@img&quot;, ((FileUpload)EditUsrInfoFVw.FindControl(&quot;EditImgFUP&quot;)).FileName);

               var fileUpload = EditUsrInfoFVw.FindControl(&quot;EditImgFUP&quot;) as FileUpload;

               if (fileUpload != null &amp;&amp; fileUpload.HasFile)
               {
                   fileUpload.SaveAs(Server.MapPath(&quot;~/images/users/&quot; + fileUpload.FileName));
 EduSRiNFOCon.Open();
                int result = EditUsrInfocmd.ExecuteNonQuery();
                if (result > 0)
                {
                    // Updated successfully;
                }
                }
                   else
                   {
                        EduSRiNFOCon.Open();
                int result = EditUsrInfoSQLWithoutImage.ExecuteNonQuery();
                if (result > 0)
                {
                    // Updated successfully;
                }
                   }
               }
               

            }



            ReHPPersInfo();
        }


Рейтинг:
11

ParinPatel

если старое изображение удалить

string imageFilePath = Serve.MapPath(@"~/uploaded/imagefilename.extension");
System.IO.File.Delete("imageFilePath");