使用update SQL语句时,FileUpload保留旧图像
本文关键字:FileUpload 保留 图像 update SQL 语句 使用 | 更新日期: 2023-09-27 18:07:02
下面的代码工作良好,但我正在寻找的情况下,如果用户没有选择一个新的照片,那么代码将不会更新当前的图像。下面的代码,当我点击更新按钮(并保持文件上传为空),它显示没有图像,但目前有一个旧的图像到表和图像文件。
<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>
<td>Personal Image:</td>
<td>
<asp:FileUpload ID="EditImgFUP" runat="server" CssClass="form-control" />
</td>
</tr>
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("@FN", ((TextBox)EditUsrInfoFVw.FindControl("FNEDTTXTBX")).Text);
EditUsrInfocmd.Parameters.AddWithValue("@LN", ((TextBox)EditUsrInfoFVw.FindControl("LNEDTTXTBX")).Text);
EditUsrInfocmd.Parameters.AddWithValue("@Password", ((TextBox)EditUsrInfoFVw.FindControl("PASSEDTTXTBX")).Text);
EditUsrInfocmd.Parameters.AddWithValue("@RePass", ((TextBox)EditUsrInfoFVw.FindControl("REPASEDTTXTBX")).Text);
EditUsrInfocmd.Parameters.AddWithValue("@Website", ((TextBox)EditUsrInfoFVw.FindControl("REWEBSITETXTBX")).Text);
EditUsrInfocmd.Parameters.AddWithValue("@Post", ((TextBox)EditUsrInfoFVw.FindControl("PSOTEDTTXTBX")).Text);
EditUsrInfocmd.Parameters.AddWithValue("@Email", ((TextBox)EditUsrInfoFVw.FindControl("EMAEDTTXTBX")).Text);
EditUsrInfocmd.Parameters.AddWithValue("@Address", ((TextBox)EditUsrInfoFVw.FindControl("AddEDTTXTBX")).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();
}
可以这样写:
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";
if (fileUpload != null && fileUpload.HasFile)
{
EditUsrInfoSQL += @", Img=@img";
}
EditUsrInfoSQL += @" Where UID=@UID";
然后在绑定
时再次检查if (fileUpload != null && fileUpload.HasFile)
{
EditUsrInfocmd.Parameters.AddWithValue("@img", ((FileUpload)EditUsrInfoFVw.FindControl("EditImgFUP")).FileName);
}
这不是很优雅,但应该可以工作
或者您可以首先删除该字段,并仅在成功上传图像时自行更新。