将FileUpload用于多个文件时,图像名称是正确的,但它们都是相同的颜色

时间:2014-03-25 23:23:52

标签: c# asp.net file-upload webforms

我使用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;
                }
            }
        }
    }

很明显它发生在上传控制中,但我没有看到我的错误在哪里。

1 个答案:

答案 0 :(得分:2)

这个电话:

fpSlideshow.SaveAs(Server.MapPath(@"~/SlideshowImages/" + imgName));

似乎没有依赖uploadedFile。每次在保存文件的文件名不同的同一对象上调用相同的方法。如果fpSlideshowFileUpload类的实例,那么我认为默认行为是将第一个文件保存在PostedFiles中。在.SaveAs上拨打uploadedFile可以解决问题。