AjaxControlToolkit 文件上传不起作用

问题描述 投票:0回答:1
c# asp.net file-upload ajaxcontroltoolkit asyncfileupload
1个回答
0
投票

好吧,所以不清楚你是如何安装工具包的(nuget,或 zip 下载)。

只需拖放 ajaxfileupload 控件即可正确连接页面。

但是,您还需要页面上的脚本管理器(并且您需要该脚本管理器来实现工具包中的几乎所有控制)。

因此,空白页面的流程如下所示:

如您所见,上面的代码自动将程序集引用添加到页面。

如上所述,该页面确实有一个脚本管理器放入页面中(将脚本管理器放入表单标记之后)。

所以,我们的页面标记现在看起来像这样:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UpLoadTest.aspx.cs" Inherits="Web35.UpLoadTest" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajaxToolkit" %>


<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager>
        <div style="padding:35px;width:40%">


            <ajaxToolkit:AjaxFileUpload ID="AjaxFileUpload1" runat="server"
            
                />

        </div>

    </form>
</body>
</html>

此时,我们可以(应该)尝试使用属性表来添加上传文件事件。

因此,选择该控件,然后显示属性表。

所以,那么这个:

因此,在大多数情况下,让 vs 为您编写和创建事件存根。

上面创建了这个事件存根,让我们添加一些代码来保存文件。

    protected void AjaxFileUpload1_UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
    {
        // One file uploaded, save it

        string sFileAndPath = Server.MapPath($@"~\UpLoadFiles\{e.FileName}");

        AjaxFileUpload1.SaveAs(sFileAndPath);

    }

但是,在上述任何操作之前?

我们必须将以下内容添加到 web.config 中:

在配置部分,添加以下内容:

<handlers>
  <add name="AjaxFileUploadHandler" verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit" />
</handlers>
<validation validateIntegratedModeConfiguration="false" />
<security>
  <requestFiltering>
    <requestLimits maxAllowedContentLength="2147483648" />
  </requestFiltering>
</security>

(您可能在 web.config 中有一个处理程序部分,因此请使用它)。

如你所见,这就是为什么我再次建议你使用nuget来安装工具包。

上述内容应该会使控件现在为您工作。

最终结果是一个非常好的上传控件。它允许无限大小并具有拖放热点。所以,这样说吧:

© www.soinside.com 2019 - 2024. All rights reserved.