FileUpload内容为空

时间:2015-05-22 15:07:09

标签: c# asp.net file-upload

我知道有很多关于同一主题的问题,但我还没有看到解决我的问题的问题。所以我有一个UpdatePanel ContentTemplate我有ListView Panel,里面有FileUpload, “取消”按钮和“上传”按钮。按下上载按钮时,它会调用服务器端的方法来处理文件上载业务。我的问题是HttpFileCollection对象是空的,即使我确实选了一些东西。

这是我正在做的事情的一个例子。按照公司的政策我不能发布原始节目,但这应该足够了,因为它是上传时唯一运行的东西。

客户方:

<asp:UpdatePanel ID="upMain" runat="server">
<ContentTemplate>
    <asp:ListView>
        <asp:Panel ID="pnlFileUpload" runat="server" CssClass ="custom-menu">
            <asp:FileUpload ID="fuUpload" runat="server" AllowMultiple="true" />
            <asp:Button ID="btnUpload" runat="server" Text="Upload" OnClick="OnUploadFile" />
            <asp:Button ID="btnCancel" runat="server" Text="Cancel" />                                    
        </asp:Panel>

        <asp:ModalPopupExtender ID="mpeUpload" runat="server" TargetControlID ="imgBtnUploadFile" PopupControlID="pnlFileUpload" CancelControlID="btnCancel"
    BackgroundCssClass="modalBackgroud">
            <Animations>
            <OnShown>
                <%--The FadeIn and Display animation.--%>
                <FadeIn Duration="0.25" MinimumOpacity="0" MaximumOpacity="1" />
            </OnShown>
            </Animations>
        </asp:ModalPopupExtender>
    </asp:ListView>
</ContentTemplate>
</asp:UpdatePanel>

服务器端:

protected void OnUploadFile(object sender, EventArgs e)
{
    HttpFileCollection files = Request.Files; 
}

我在files上有一个断点,当它点击时,keys为0,content为空,InputStream也是如此。我已经尝试了一些不同的事情,从设置页面enctype ="multipart/form-data"到我现在还记不住的许多其他事情。

仍然掌握asp,所以任何有关解释的建议都会非常感激。

2 个答案:

答案 0 :(得分:1)

您的错误很可能是由于UpdatePanel造成的。控制的前提是美妙的,可悲的是执行是可怕的。它通常会导致您的页面状态出现问题。它在UpdatePanel实际工作方式中这样做。

控件将获取您的页面副本,将其存储在内存中,然后它将重新加载您的页面。这将阻碍您的性能,但副作用是当页面重新加载时,它将通过 Asp.Net页面生命周期。如果你不小心,这会产生一系列问题。

我会做的是将您的FileUploadUpload Button移出小组,验证其是否正确上传。确认后,您知道 UpdatePanel 是罪魁祸首。然后你可以在约束内工作,或者我会做手动Ajax请求。

希望您的解释更加详细。

答案 1 :(得分:1)

来自MSDN

  

以下ASP.NET控件与部分页面不兼容   更新,因此不适用于 UpdatePanel   控制:

     

...

     

FileUpload 和HtmlInputFile控制用于上传的时间   文件作为异步回发的一部分   ...

     

UpdatePanel 中使用 FileUpload 或HtmlInputFile控件   控制,设置提交文件的回发控件   面板的 PostBackTrigger 控件。 FileUpload 和   HtmlInputFile控件只能在回发场景中使用