发布公司产品时,上传小图和大图
但现在问题是如果不上传图片,没问题;
只上传小图片或者大图片也没问题;
如果小图片和大图片一起上传,写入数据库的都是大图路径。问题出在img_url,img_url1都是引用了同一个变量,请高手帮忙解决一下,谢谢!!<form id="form1" runat="server">
产品小图:<INPUT id="myfileAdd" type="file" size="50" name="myfile" runat="server" />
产品大图:<INPUT id="myfile1Add" type="file" size="50" name="myfile1" runat="server" />
<asp:button id="btn_Ok" runat="server" Text=" 添加 " OnClick="btn_Ok_Click" >
</form>增加新产品的程序如下:protected void btn_Ok_Click(object sender, EventArgs e)
    {
        string img_url;
        img_url = UploadPicFile(myfileAdd);
        if (img_url == "")
            img_url = "nopic.jpg";        string img_url1;
        img_url1 = UploadPicFile(myfile1Add);
        if (img_url1 == "")
            img_url1 = "nopic1.jpg";
        Hashtable ht = new Hashtable();
        ht.Add("ProductName", SqlStringConstructor.GetQuotedString(ProductName.Text));
        ht.Add("ProductModel", SqlStringConstructor.GetQuotedString(ProductModel.Text));
        ht.Add("ClassID", SqlStringConstructor.GetQuotedString(ClassID.SelectedItem.Value));
        ht.Add("PicPathSmall", SqlStringConstructor.GetQuotedString(img_url));
        ht.Add("PicPathBig", SqlStringConstructor.GetQuotedString(img_url1));
        ht.Add("ProductContent", SqlStringConstructor.GetQuotedString(FreeTextBox1.Text));        Product1 product1 = new Product1();
        product1.Add(ht);        Response.Redirect("add_product1_prs.aspx");
    }上传图片的程序如下:
  private string UploadPicFile(System.Web.UI.HtmlControls.HtmlInputFile Fupload)
    {
        //文件上传
        try
        {
            if (Fupload.PostedFile.FileName == "")
                return "";
            string dir = DateTime.Now.ToString("yyyyMM");
            if (!Directory.Exists(Server.MapPath("..\\..\\upimage\\") + dir))
            {
                Directory.CreateDirectory(Server.MapPath("..\\..\\upimage\\") + dir);
                if (!Directory.Exists(Server.MapPath("..\\..\\upimage\\") + dir))
                    return "";
            }
            Random rd = new System.Random();
            string filename;
            string extname;            if (Fupload.PostedFile.FileName != "")
            {
                extname = Fupload.PostedFile.FileName.Substring(Fupload.PostedFile.FileName.LastIndexOf(".") + 1).ToUpper();
                if ("JPG|GIF|BMP|PNG".IndexOf(extname) == -1)
                {
                    return "";
                }                filename = dir + "/" + DateTime.Now.ToString("yyyyMM") + rd.Next(1000).ToString() + "." + extname;
                Fupload.PostedFile.SaveAs(Server.MapPath("..\\..\\upimage\\") + filename);
                return filename;
            }
            return "";        }
        catch { return ""; }
    }

解决方案 »

  1.   

    将dir定义为全局变量试试看或者你给UploadPicFile这个函数传递一个变量用以判断上传的是两张图还是一张图,具体的没有你的源码,没法帮你测试,你自己测试一下吧
      

  2.   

    楼上说的对,用GDI把大图缩一个小图出来,。
      

  3.   

    生成缩略图的确是一个办法,但很多客户需要高清的小图,所以要分开来传
    在VB.NET里面我知道怎么实现,但在C#里面就是写不出来,所以烦请各位高手帮帮忙
      

  4.   

    VB.NET 和C# 有多大的区别啊~~~~~
    呵呵 需要高清的小图就用别人的代码和算法 呵呵