【问题标题】:asp.net ajax upload file real time progress bar not workingasp.net ajax上传文件实时进度条不起作用
【发布时间】:2011-06-29 06:30:10
【问题描述】:

我正在尝试进行 ajax 文件上传和实时进度条, 我已经在本地主机中对其进行了测试,并且效果很好, 但是,当我尝试在在线 Web 服务器上对其进行测试时,该栏直到上传文件结束时才起作用, 当我将 System.Threading.Sleep(value) 放在上传循环的末尾时, 酒吧工作,但上传很慢,

我该如何解决这个问题?

我使用的步骤:

  1. 构造iframe(指向Upload.aspx)并在其中上传文件。

  2. 在页面加载 javascript 函数时,使用 window.parent.register(form) 函数调用 iframe 页面,该函数将 iframe 表单谓词到父页面中的 javascript 变量。

  3. 在父页面 (Default.aspx) 中,我放置了一个按钮,然后 onclick 提交了谓词的 iframe 表单。然后javascript间隔每(1000ms)调用一次ajax回调函数。

  4. 此函数(ajax 回调)正在监视会话["UploadInfo"]。

  5. 当 iframe 表单提交 iframe 页面时,它调用 DoUpload() 方法在 while 循环中从 (fileUpload.PostedFile.InputStream.Read(bytes,0,1);) 读取文件然后写入特定路径中的字节,并将 (1) 添加到 session["UploadInfo"] (这会增加进度条)。

  6. 我想让 DoUpload 和 ajax 回调函数同步工作。

  7. 当我在 localhost 中运行网站时,一切都完全按照我的预期运行,但是从网站运行时,进度条不起作用。

注意:当我将 System.Threading.Thread.Sleep(100) 放入 while 循环时,进度条可以工作,但速度很慢。

【问题讨论】:

  • 有可用的代码吗?你用什么控件?
  • 问题是代码太长无法发布,但我使用的是 iframe 和其中的文件上传控件,所以当异步刷新 iframe 页面时。
  • 基于你的 sleep(100) 导致进度条工作的事实,我要说你做文件大小检查的内部需要增加。

标签: asp.net ajax file-upload upload


【解决方案1】:

您好,我在搜索带有进度条和文件大小验证的非 Flash 文件上传解决方案时找到了您的答案。

一般来说,您需要适用于客户端浏览器和服务器端的 flash 或 java 之类的小程序。

但是,我正在寻找您尝试过的确切解决方案。

您尝试了很好,但问题在于实现逻辑。您非常了解 Javascript 无法访问本地文件系统。因此,您依靠 AJAX 获取服务器端代码来告诉您接收/上传的文件数量。

对计算文件大小的文件进行异步调用是个好主意。要了解您面临的问题,您需要了解它的工作方式。

文件上传将使用位于浏览器端的流读取器和流写入器到服务器端的文件系统进行。您可能还需要考虑同源策略,这对于向服务器发出的多个 AJAX 请求非常重要。

根据 HTTP 1.1 规范,任何浏览器都只会同时向服务器抛出 2 个并行连接。也就是说,同一个域名只能下载2个资源。

请检查这些选项并发布您的回复。最好选择一个组件。我正在使用 obout 文件上传器 (http://www.obout.com/Obout.Ajax.UI/FileUpload/)。多年来我工作得很好。现在,根据我的客户要求,我需要一个没有闪存的组件。否则它是我用于文件上传的最佳 ASP.NET 组件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-16
    相关资源
    最近更新 更多