1

我做了很多搜索,并尝试了许多不同的选项。甚至没有见过任何其他有类似问题的人。

我将以下代码放入我的页面中,并且该元素在页面上反应良好。对于 'ToolKitScriptManager,我尝试了常规的和下面显示的。都不工作。

        <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server"></asp:ToolkitScriptManager>
        <asp:AjaxFileUpload ID="inpFileUpload" runat="server" OnUploadComplete="inpFileUpload_UploadComplete" MaximumNumberOfFiles="3" AllowedFileTypes="jpg,jpeg,doc,png" />

我有以下元素的背景代码

    protected void inpFileUpload_UploadComplete(object sender, AjaxControlToolkit.AjaxFileUploadEventArgs e)
    {
        string path = @"\\NetworkPath\UploadedFiles\" + e.FileName;
        inpFileUpload.SaveAs(path);
    }

但是,它没有给我任何错误,或说明任何可能出错的消息。我已经按照我能找到的关于这个元素的所有教程进行操作,但没有一个能够解决这个问题。

我按浏览找到一个文件,选择一个/多个,一切似乎都很好,文件出现在上传列表中。

但是,当我单击此 AjaxFileUpload 元素附带的“上传”按钮时,什么也没有发生。有时您会在“上传”按钮上看到红色,但它会立即再次变回“上传”蓝色样式。不上传选定的文件,或者据我所知,当按下按钮时它没有做任何事情,除了非常快速地改变按钮的外观。

不知道我做错了什么,或者我是否遗漏了什么..

更新

感谢 Matthew 的帮助,了解到有一个 javascript 错误控制台,当按下“上传”按钮时,它会返回“未捕获的异常:无法开始上传”

4

4 回答 4

1

我不能为你解决问题,但我可以告诉你从哪里开始。

首先,你用的是什么浏览器?这可能很重要,特别是如果您使用的是旧版本的 IE。

不过,在此之后,这里有一些使用和调试 AJAX 的技巧:

  1. 如果它不起作用,第一步是检查 Javascript 错误控制台。在 IE 和 Chrome 中,按 F12 打开开发工具。在 Firefox 中,按 Ctrl+Shift+J 打开 JS 错误控制台。如果您使用的是 Firefox,我建议您也使用“ Web Developer ”扩展和Firebug
  2. 如果错误控制台中没有错误,请使用良好的 HTTP 调试器/代理(我喜欢Fiddler)来确保您期望的 AJAX 请求是页面正在发出的 AJAX 请求。(如果您还不太了解 HTTP,这是开始学习的好方法。是的,您确实需要了解这些内容。)
  3. 在多个浏览器中对其进行测试,以查看它是否是特定于浏览器的问题。
于 2013-07-17T15:15:37.000 回答
1

看来我解决了。当我加载页面时,它与我的 Request.QueryString["id"] 有关。出于某种原因,它会重新加载页面并丢失返回 null 的 QueryString ,这反过来会导致文件上传的一切都搞砸了。

当我将硬编码变量分配为 QueryString["id"] 时,上传工作正常。但是,当保持正常以获取 QueryString 时,它会失败并返回 null。

我还没有解决为什么它抓取 null 而不是我的 ID 号,但我在 ID 号中进行了硬编码,并且上传工作几乎证实了这是问题所在。

如果有人可能有关于为什么我的 QueryString 在文件上传时返回 null 的信息,那就太好了!哈哈

回答

所以做了一些研究,显然这是 AjaxToolKit 的问题,而不是我一直在做的任何事情。我从https://ajaxcontroltoolkit.codeplex.com/workitem/27149下载了链接,并将 DLL 与更新的 javascript 代码更改一起使用,一切都开始正常工作。

根据我的发现,fileupload 不会解析 URL 中已经放置的查询字符串,因此它会用它需要的内容替换它们,并继续运行而不会出现很多错误。

让我们希望他们得到它的更新版本。

于 2013-07-19T14:14:08.047 回答
1

我认为您可能在以下<system.web>部分的 web.config 中缺少此内容:

<httpHandlers>
  <add verb="*" path="AjaxFileUploadHandler.axd" type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit"/>
</httpHandlers>

在链接中找到:http: //ajaxcontroltoolkit.codeplex.com/SourceControl/latest#SampleWebSites/AjaxControlToolkitSampleSite/Web.config

于 2013-07-17T17:12:59.527 回答
0

将以下行添加到配置部分下的 web.config 文件中:

<configuration>
<system.webServer>
<handlers>
<add name="AjaxFileUploadHandler" verb="*" path="AjaxFileUploadHandler.axd" Type="AjaxControlToolkit.AjaxFileUploadHandler, AjaxControlToolkit"/>
</handlers>     
</system.webServer>`
</configuration>
于 2014-09-12T11:49:03.243 回答