19

我有一个更新面板,在更新面板中我有文件上传控件和按钮控件,单击按钮时,我需要在更新面板的文件上传控件中上传的文件。

确切的情况,我在页面上有 8 个选项卡,每个选项卡都包含太多信息,其中一个选项卡是附件,当用户单击显示的添加新附件模式弹出窗口时,模式包含更新面板中的详细信息视图,并且在详细信息视图中我有文件上传控制,当用户点击保存按钮,触发 detailsview 插入事件,在插入事件中我需要我上传的文件。
请注意,我的页面很重,我不想要完整的 postBack。


有没有人有这个问题的解决方案?

提前感谢您的帮助......

4

6 回答 6

36

要解决此问题,请参阅以下步骤。

  1. 将 ajax-upload 添加到您的详细信息视图中。
    • 基于 iframe 的上传器,例如 Resource#1。
    • 基于 Silverlight 和基于 Flash 的上传器。我喜欢这种技术,因为它不需要任何服务器端脚本来显示当前上传状态。但是在 HTML5 中,您可以在不使用任何 Web 浏览器插件的情况下创建它。
    • 像 Resource#2 这样的商业上传器。使用隐藏的 iframe 进行上传。
  2. 将文件上传到临时位置。

    • 系统响应临时位置。接下来,客户将临时位置以详细形式隐藏在输入中。
    • 使用 session_id 保留临时位置。您可以将其存储在数据库或 Session 变量中,具体取决于您的框架。
  3. 当您点击保存按钮时,系统会将文件移动到它们的真实位置

笔记。系统会自动从临时位置删除过期文件。

资源

  1. 带有实时进度条的ASP.NET 文件上传
  2. ASP.NET 文件上传,如 GMail(商业)

更新

将近一年后,我刚刚为这个问题找到了一个很好的第三方控制。这是一个jQuery的开源插件。它命名为 Plupload,允许您使用 HTML5、Silverlight、Flash 或普通表单上传文件,并提供一些独特的功能,例如上传进度、图像大小调整和分块上传。

您可以点击此处尝试和测试 Plupload。

于 2009-04-28T10:27:18.540 回答
4

如果没有在客户端上安装合作的二进制文件,就无法完成。AJAX 框架没有安全的机制来读取文件的内容并因此能够将其发送到服务器。浏览器仅支持作为来自文件输入框的多部分表单发布。

于 2009-04-28T10:19:21.227 回答
1

问题在于 HTML 文件上传控件的工作方式,与 ASP.net 无关,要使文件上传控件工作,您需要完整发布表单数据。您只能通过在执行实际上传的隐藏 iframe 中执行所有操作来模拟您没有进行完整回发

于 2009-06-09T20:08:22.833 回答
0

您看到的提供此功能的站点通常使用 Flash 或 iframe,以便回发发生在 iframe 中并给人一种 ajax 请求的错觉。

高温高压

OneSHOT

于 2009-06-08T10:31:07.320 回答
0

我已经尝试过 swfupload ( http://swfupload.org/ ),但请记住,如果您在非 IE 浏览器中使用表单身份验证,则必须跳过障碍。这显然是一个 flash 错误,并且在 flash 10 中没有修复。因为这个错误,我决定不在我们的框架中使用它,但它在其他方面是一个很棒的产品。

于 2009-06-11T18:41:21.280 回答
0

我推荐来自 YUI 的上传器小部件。见http://developer.yahoo.com/yui/uploader/

我认为你可以用它来实现你的目标。在完成上传后,您的 javascript 需要将文件从服务器返回到客户端。但是页面不会刷新——上传是通过 Flash 和隐藏的 iframe 进行的。向用户显示文件内容的下载将通过 ajax 进行。

如果用户不“批准”上传,那么只需对服务器进行另一个 ajax 调用以删除文件。

于 2009-06-12T03:01:07.320 回答