none
asp的FileUpload控件在update控件里失效问题 RRS feed

  • 问题

  • 问题描述:页面有一个Update控件,里面有一个FileUpload控件。但每次FileUpload控件上传的内容我在后台都取不到。好象是被刷掉了。请问有没有办法能解决这个问题?也就是说不被刷掉。
    zy
    2009年5月19日 6:10

答案

  • 这是以前写的例子,你看看对你适合不

    html
    ------------------------------------------------
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="BatchUpdate.aspx.cs" Inherits="UpdateLoad_BatchUpdate" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:FileUpload ID="FileUpload1" runat="server" /><br />
                <asp:FileUpload ID="FileUpload2" runat="server" /><br />
                <asp:FileUpload ID="FileUpload3" runat="server" /><br />
                <asp:FileUpload ID="FileUpload4" runat="server" /><br />
                <asp:FileUpload ID="FileUpload5" runat="server" /><br />
                
                <asp:Button ID="btnUpload" runat="server" Text="上传" onclick="btnUpload_Click" />
            </div>
        </form>
    </body>
    </html>
    
    
    cs
    -----------------------------------------
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.IO;
    
    public partial class UpdateLoad_BatchUpdate : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
    
        protected void btnUpload_Click(object sender, EventArgs e)
        {
            Random fRandom = new Random();
            string fNewFileName;
            string fNewFilePath;
            for (int i = 0; i < Request.Files.Count; i++)
            {
                fNewFileName = string.Format("{0}.{1}", Guid.NewGuid(), Path.GetExtension(Request.Files[i].FileName));
                fNewFilePath = Path.Combine(Server.MapPath("Images"), fNewFileName);
                Request.Files[i].SaveAs(fNewFilePath);
            }
        }
    }
    
    


    知识改变命运,奋斗成就人生!
    • 已标记为答案 张烨 2009年5月21日 0:43
    2009年5月19日 7:38
    版主

全部回复

  • Update控件是什么?自定控件还是UpdatePanel?
    知识改变命运,奋斗成就人生!
    2009年5月19日 6:23
    版主
  • 是UpdatePanel,不好意思
    zy
    2009年5月19日 6:25
  • UpdatePanel 默认不支持上传文件, 如果你非得要用 UpdatePanel 你可以参考下面的地址 
    知识改变命运,奋斗成就人生!
    2009年5月19日 6:35
    版主
  • 谢谢X.X.Y的指点。不过您提供的网址内容我目前还看不明白。毕竟做.net的开发才1年时间。目前项目非常急,所以您提供的信息目前来不及消化。不知道有没有什么简单、变通的方法来实现上传功能?
    zy
    2009年5月19日 7:19
  • 这是以前写的例子,你看看对你适合不

    html
    ------------------------------------------------
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="BatchUpdate.aspx.cs" Inherits="UpdateLoad_BatchUpdate" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
    </head>
    <body>
        <form id="form1" runat="server">
            <div>
                <asp:FileUpload ID="FileUpload1" runat="server" /><br />
                <asp:FileUpload ID="FileUpload2" runat="server" /><br />
                <asp:FileUpload ID="FileUpload3" runat="server" /><br />
                <asp:FileUpload ID="FileUpload4" runat="server" /><br />
                <asp:FileUpload ID="FileUpload5" runat="server" /><br />
                
                <asp:Button ID="btnUpload" runat="server" Text="上传" onclick="btnUpload_Click" />
            </div>
        </form>
    </body>
    </html>
    
    
    cs
    -----------------------------------------
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.IO;
    
    public partial class UpdateLoad_BatchUpdate : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
    
        }
    
        protected void btnUpload_Click(object sender, EventArgs e)
        {
            Random fRandom = new Random();
            string fNewFileName;
            string fNewFilePath;
            for (int i = 0; i < Request.Files.Count; i++)
            {
                fNewFileName = string.Format("{0}.{1}", Guid.NewGuid(), Path.GetExtension(Request.Files[i].FileName));
                fNewFilePath = Path.Combine(Server.MapPath("Images"), fNewFileName);
                Request.Files[i].SaveAs(fNewFilePath);
            }
        }
    }
    
    


    知识改变命运,奋斗成就人生!
    • 已标记为答案 张烨 2009年5月21日 0:43
    2009年5月19日 7:38
    版主
  • 你使用的是asp.net ajax 框架吧。默认情况会产生一堆脚本。
    复杂的功能确实容易出问题,你可以考虑别的方式:
    1.或许可以考虑别的ajax框架,如ajax pro.和.net 结合的也很好。网上很多资料。
    2.可以考虑吧上传控件移出来,这样实现简单~
    you have a dream,you gonna protect it! http://www.cnblogs.com/frank_xl
    2009年5月20日 4:40
    版主
  • 谢谢各位的解答。我现在想到一个办法,就是用iframe来做。但出现问题。在DataList的SelectedItemTemplate模板里放iframe得话,那么程序在运行时会把iframe以下的内容全部截断。请教这是为什么?有没有解决的办法?
    zy
    2009年5月20日 7:42