通过fileupload上传图像后发现问题
问题描述:
你好
下面的代码是有效的,但问题是,当图像上传到文件然后它变空我的意思是如果我打开文件夹我看到有图像文件的名称正确但大小是0字节,它没有显示图像
Hello
The below code is working but the problem is that when the images uploaded to the files then it comes empty i mean if i open the folder i see there is image file with correct name but the size is 0 bytes and it did not show the image
private string[] GetImagess(string UID)
{
SqlConnection EdPersInfoCon = new SqlConnection(sc);
EdPersInfoCon.Open();
SqlCommand EdPersInfocmd = new SqlCommand();
string sqlstatment = @"select Img,Logo,image1,image2,image3 from UserInfo Where UID=@UID";
EdPersInfocmd.Connection = EdPersInfoCon;
EdPersInfocmd.CommandType = CommandType.Text;
EdPersInfocmd.CommandText = sqlstatment;
EdPersInfocmd.Parameters.AddWithValue("@UID", UID);
SqlDataReader reader = EdPersInfocmd.ExecuteReader();
string[] imagesUI = new string[5];
if (reader.Read())
{
for (int i = 0; i < 5; i++)
{
if (reader.GetValue(i) is DBNull)
{
imagesUI[i] = string.Empty;
}
else
{
imagesUI[i] = reader.GetString(i);
}
}
}
return imagesUI;
}
protected void editHPPersInfobtn_Click(object sender, EventArgs e)
{
SqlConnection EdPersInfoCon = new SqlConnection(sc);
SqlCommand EditUsrInfoCMD = new SqlCommand();
var UsrNme = Session["UsrNme"];
string FileExtentiona = System.IO.Path.GetExtension(EditImgFUP.FileName);
string FileExtentiona2 = System.IO.Path.GetExtension(EditPersInfologoFileUp.FileName);
string FileExtentiona3 = System.IO.Path.GetExtension(EditPesInfoBizImg1FU.FileName);
string FileExtentiona4 = System.IO.Path.GetExtension(EditPesInfoBizImg2FU.FileName);
string FileExtentiona5 = System.IO.Path.GetExtension(EditPesInfoBizImg3FU.FileName);
if (Session["UsrNme"] != null)
{
if (EditImgFUP.HasFile || EditPersInfologoFileUp.HasFile || EditPesInfoBizImg1FU.HasFile || EditPesInfoBizImg2FU.HasFile || EditPesInfoBizImg3FU.HasFile)
{
if (EditImgFUP.PostedFile.ContentType.ToLower().StartsWith("image/") ||
EditPersInfologoFileUp.PostedFile.ContentType.ToLower().StartsWith("image/") ||
EditPesInfoBizImg1FU.PostedFile.ContentType.ToLower().StartsWith("image/") ||
EditPesInfoBizImg2FU.PostedFile.ContentType.ToLower().StartsWith("image/") ||
EditPesInfoBizImg3FU.PostedFile.ContentType.ToLower().StartsWith("image/"))
{
var files = new[] { FileExtentiona, FileExtentiona2, FileExtentiona3, FileExtentiona4, FileExtentiona5 };
var extensions = new[] { ".jpg", ".png" };
if ((files.Intersect(extensions).Count()) > 0)
{
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, Logo=@Logo, image1=@image1, image2=@image2, image3=@image3 Where UID=@UID";
EditUsrInfoCMD.Connection = EdPersInfoCon;
EditUsrInfoCMD.CommandType = CommandType.Text;
EditUsrInfoCMD.CommandText = EditUsrInfoSQL;
EditUsrInfoCMD.Parameters.AddWithValue("@UID", UsrNme);
EditUsrInfoCMD.Parameters.AddWithValue("@FN", FNEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@LN", LNEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@Password", PASSEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@RePass", REPASEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@Website", REWEBSITETXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@Post", PSOTEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@Address", AddEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@Email", EMAEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@TeleNum", TeleEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@Facebook", FaceEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@GooglePlus", GoogEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@Twitter", TwitEDTTXTBX.Text);
string imgnouser = "/images/general/nouser.jpg";
string[] imagesUI = GetImagess(Convert.ToString(UsrNme));
if (EditImgFUP.HasFile)
{
EditUsrInfoCMD.Parameters.AddWithValue("@Img", EditImgFUP.FileName);
EditImgFUP.SaveAs(Server.MapPath("~/images/users/" + EditImgFUP.FileName));
}
else
{
if (string.IsNullOrEmpty(imagesUI[0]))
{
EditUsrInfoCMD.Parameters.AddWithValue("@Img", imgnouser);
}
else
{
EditUsrInfoCMD.Parameters.AddWithValue("@Img", imagesUI[0]);
}
}
if (EditPersInfologoFileUp.HasFile)
{
EditUsrInfoCMD.Parameters.AddWithValue("@Logo", EditPersInfologoFileUp.FileName);
EditImgFUP.SaveAs(Server.MapPath("~/images/Logos/" + EditPersInfologoFileUp.FileName));
}
else
{
if (string.IsNullOrEmpty(imagesUI[1]))
{
EditUsrInfoCMD.Parameters.AddWithValue("@Logo", imgnouser);
}
else
{
EditUsrInfoCMD.Parameters.AddWithValue("@Logo", imagesUI[1]);
}
}
if (EditPesInfoBizImg1FU.HasFile)
{
EditUsrInfoCMD.Parameters.AddWithValue("@image1", EditPesInfoBizImg1FU.FileName);
EditImgFUP.SaveAs(Server.MapPath("~/images/BizImgs/" + EditPesInfoBizImg1FU.FileName));
}
else
{
if (string.IsNullOrEmpty(imagesUI[2]))
{
EditUsrInfoCMD.Parameters.AddWithValue("@image1", imgnouser);
}
else
{
EditUsrInfoCMD.Parameters.AddWithValue("@image1", imagesUI[2]);
}
}
if (EditPesInfoBizImg2FU.HasFile)
{
EditUsrInfoCMD.Parameters.AddWithValue("@image2", EditPesInfoBizImg2FU.FileName);
EditImgFUP.SaveAs(Server.MapPath("~/images/BizImgs/" + EditPesInfoBizImg2FU.FileName));
}
else
{
if (string.IsNullOrEmpty(imagesUI[3]))
{
EditUsrInfoCMD.Parameters.AddWithValue("@image2", imgnouser);
}
else
{
EditUsrInfoCMD.Parameters.AddWithValue("@image2", imagesUI[3]);
}
}
if (EditPesInfoBizImg3FU.HasFile)
{
EditUsrInfoCMD.Parameters.AddWithValue("@image3", EditPesInfoBizImg3FU.FileName);
EditImgFUP.SaveAs(Server.MapPath("~/images/BizImgs/" + EditPesInfoBizImg3FU.FileName));
}
else
{
if (string.IsNullOrEmpty(imagesUI[4]))
{
EditUsrInfoCMD.Parameters.AddWithValue("@image3", imgnouser);
}
else
{
EditUsrInfoCMD.Parameters.AddWithValue("@image3", imagesUI[4]);
}
}
}
else
{
EditPersInfoImgFrmtWarnLbl.Text = "The file should have .png or .jpg format only";
EditPersInfoImgFrmtWarnLbl.ForeColor = System.Drawing.Color.Red;
}
}
}
else
{
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 Where
UID=@UID";
EditUsrInfoCMD.Connection = EdPersInfoCon;
EditUsrInfoCMD.CommandType = CommandType.Text;
EditUsrInfoCMD.CommandText = EditUsrInfoSQL;
EditUsrInfoCMD.Parameters.AddWithValue("@UID", UsrNme);
EditUsrInfoCMD.Parameters.AddWithValue("@FN", FNEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@LN", LNEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@Password", PASSEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@RePass", REPASEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@Website", REWEBSITETXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@Post", PSOTEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@Address", AddEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@Email", EMAEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@TeleNum", TeleEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@Facebook", FaceEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@GooglePlus", GoogEDTTXTBX.Text);
EditUsrInfoCMD.Parameters.AddWithValue("@Twitter", TwitEDTTXTBX.Text);
}
EdPersInfoCon.Open();
int result = EditUsrInfoCMD.ExecuteNonQuery();
if (result > 0)
{
// Updated successfully;
}
EditUsrPan.Visible = false;
showusrinfo.Visible = true;
ReHPPersInfo();
}
}
答
我相信你有多个上传控件在您的页面中(ditImgFUP,EditPersInfologoFileUp,EditPesInfoBizImg1FU)。但是在代码中,您正在检查一个控件的hasFile属性和其他控件的SaveAs()。请参阅下面的代码,它是在 EditPersInfologoFileUp 控件中检查文件,但它是从 EditImgFUP 控件保存的。它可能是 EditImgFUP 控件中不存在的文件。
I believe that you have multiple Upload controls in your page(ditImgFUP,EditPersInfologoFileUp, EditPesInfoBizImg1FU). But in code you are checking hasFile property for one control and SaveAs() for other control. See in below code it is checking file in EditPersInfologoFileUp control but it is saving from EditImgFUP control. It might be file is not present in EditImgFUP control.
if (EditPersInfologoFileUp.HasFile)
{
EditUsrInfoCMD.Parameters.AddWithValue("@Logo", EditPersInfologoFileUp.FileName);
EditImgFUP.SaveAs(Server.MapPath("~/images/Logos/" + EditPersInfologoFileUp.FileName));
}
其次要确保当您使用SavaAs()进行上传控制时,您应该在该控件中上传文件。为了解决问题,HasFile控件ID和SavaAs控件应该相同,以便上传正确的文件。
Secondly make sure that when you are using SavaAs() for upload control you should upload file in that control. In order to resolve problem HasFile control ID and SavaAs control should be same to upload correct file.