【问题标题】:ASP.net File Upload - FileBytes, FileNameASP.net 文件上传 - 文件字节、文件名
【发布时间】:2014-11-26 14:12:17
【问题描述】:

您好,我在 ASP 中使用文件上传控件。我无法在我的 c# 代码中获取文件名或文件字节

aspx

 Upload Image: <asp:FileUpload runat="server" ID="fu" /> 
<asp:LinkButton ID="lnkContinue" runat="server" class="ButtonGeneric" onCommand="lnkContinue_Click">CLICK</asp:LinkButton>

cs 代码

protected void btnNext_Click(object sender, EventArgs e)
        {
 string fileName = fu.FileName;
 int DocumentID = DocumentsComponent.SaveFileByJobID(JobId, UserID, fileName,fu.FileBytes, txtDescription.Text, 1);
}

我可能必须将字节存储到一个字节变量中,但我仍然没有在文件名字符串中填充任何内容。

母版页中的更新面板:

<div id="content">
                    <asp:UpdatePanel runat="server" ChildrenAsTriggers="true" ID="up" UpdateMode="Conditional">
                        <ContentTemplate><asp:ContentPlaceHolder id="cph" runat="server" /></ContentTemplate>
                    </asp:UpdatePanel>
                </div>

【问题讨论】:

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


    【解决方案1】:

    使用以下代码包装您的代码:

    if(isPostBack)
    {
        string fileName = fu.FileName;
        int DocumentID = DocumentsComponent.SaveFileByJobID(JobId, UserID, fileName,fu.FileBytes, txtDescription.Text, 1);
    }
    

    在提交文件之前,还要检查您是否没有使用 ajax 或页面加载重新加载文件上传控件。

    【讨论】:

    • 在页面加载方法中包含回发,并且我发布的代码在从页面加载方法调用的方法中。这样就可以处理了。
    • 我建议在页面加载中放置一个断点,并逐行检查文件上传丢失其内容的位置。您可能会在控件的 html 到达您读取其文件内容的块之前重新加载它
    • 更新了我的问题以支持包含文件上传代码的按钮和按钮单击事件。我插入了中断,但仍然无法理解为什么文件名没有被填充?
    • 尝试包装 page_load int if(!isPostBack) 的全部内容,注意感叹号。 - 它不是一个解决方案,它只是用于测试目的。
    • 但这是由按钮事件触发而不是页面加载?
    【解决方案2】:

    为了关注这篇文章的其他用户,#banana 帮助我朝着正确的方向前进,问题在于我正在引用的母版页中使用的更新面板,删除更新面板就可以了.如果我想保留更新面板,我需要使用超出本文范围的触发器。

    【讨论】:

      猜你喜欢
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 2011-04-04
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多