我使用FileUploadControl将图像上传到我的数据库,然后确保它工作我打印出图像信息然后将图像输出到屏幕。 由于某种原因,我无法弄清楚为什么我使用的图像保持相同的颜色,但名称不同。 I.E
1.png为红色,2.png为绿色,3.png为蓝色,4.png为黄色。
但是当我调出上传到数据库的图像时,它现在就像这样......
1.png是红色,2.png是红色,3.png是红色,4.png是红色
我已经完成了代码,看起来很正常,我在运行后查看了Markup并且图像名称都是正确的。但是当我查看文件夹时,我提到的颜色与1.png相同。
FileUpload
protected void btnUpload_Click(object sender, EventArgs e)
{
//Making sure that images are images
string[] matchExtension = { ".jpg", ".png", ".gif" };
string[] matchMimeType = { "image/jpeg", "image/png", "image/gif" };
if (fpSlideshow.HasFiles)
{
string imgName;
string imgExtension;
string imgMime;
foreach (HttpPostedFile upLoadedFile in fpSlideshow.PostedFiles)
{
imgName = upLoadedFile.FileName;
imgExtension = Path.GetExtension(imgName);
imgMime = fpSlideshow.PostedFile.ContentType;
if (matchExtension.Contains(imgExtension) && matchMimeType.Contains(imgMime))
{
fpSlideshow.SaveAs(Server.MapPath(@"~/SlideshowImages/" + imgName));
string thePath = Server.MapPath(@"~/SlideshowImages/" + imgName).ToString();
daccess.AddImagesToSlideshow(imgName, imgExtension, imgMime, thePath);
}
}
}
daccess.GetImageNames();
CreateMyStuff();
for (int i = 0; i != daccess.dsTEST.Tables[0].Rows.Count; i++)
{
Response.Write("<br>" + daccess.dsTEST.Tables[0].Rows[i]["ImageName"].ToString() + "<br>" +
daccess.dsTEST.Tables[0].Rows[i]["ImageType"].ToString() + "<br>" +
daccess.dsTEST.Tables[0].Rows[i]["ImageMime"].ToString() + "<br>" +
daccess.dsTEST.Tables[0].Rows[i]["ImageUrl"].ToString() + "<br>");
}
}
CreateMyStuff方法
private void CreateMyStuff()
{
// Current row count.
int rowCtr;
// Total number of cells per row (columns).
int cellCtr;
//count number of rows in dataset
int rN = daccess.dsTEST.Tables[0].Rows.Count;
for (rowCtr = 0; rowCtr < rN; rowCtr++)
{
// Create a new row and add it to the table.
TableRow tRow = new TableRow();
Table1.Rows.Add(tRow);
for (cellCtr = 1; cellCtr <= 2; cellCtr++)
{
//
Button button = new Button();
//
HyperLink link = new HyperLink();
// Create a new cell and add it to the row.
TableCell tCell = new TableCell();
if (rowCtr == rN)
break;
string myName = daccess.dsTEST.Tables[0].Rows[rowCtr]["ImageName"].ToString();
StringBuilder myStrBldr = new StringBuilder();
myStrBldr.Append("<div class=''>");
myStrBldr.Append("<img src='SlideshowImages/" + myName + "' />");
myStrBldr.Append("</div>");
tCell.Controls.Add(new LiteralControl(myStrBldr.ToString()));
tRow.Cells.Add(tCell);
rowCtr++;
if (cellCtr == 2)
{
rowCtr = rowCtr - 1;
break;
}
}
}
}
很明显它发生在上传控制中,但我没有看到我的错误在哪里。
答案 0 :(得分:2)
这个电话:
fpSlideshow.SaveAs(Server.MapPath(@"~/SlideshowImages/" + imgName));
似乎没有依赖uploadedFile
。每次在保存文件的文件名不同的同一对象上调用相同的方法。如果fpSlideshow
是FileUpload
类的实例,那么我认为默认行为是将第一个文件保存在PostedFiles
中。在.SaveAs
上拨打uploadedFile
可以解决问题。