【问题标题】:Upload files without full page postback上传文件而无需整页回发
【发布时间】:2012-09-12 23:07:20
【问题描述】:

计划

  1. 我需要上传文件而不导致整页刷新。
  2. 上传的文件应该存储在一个临时的地方(会话或 饼干)
  3. 我只会将文件保存在服务器中,如果用户 成功填写所有表单域。

注意:这是 jQuery 滑块的幻灯片之一。所以完全刷新会破坏用户体验。


问题

如果我在 AJAX 更新面板中放置一个 Fileuploader 控件,我将无法访问服务器端的文件。

注意:根据我目前的发现,这是出于安全原因。

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


问题

  1. 将文件存储在临时位置时,我应该使用会话还是 cookie? (如果用户禁用了 cookie 怎么办?)
  2. 如果阻止回发,确实违反了用户安全标准。它会损害我的网站声誉吗? (关于 SEO 等)
  3. 走哪条路?
    • C# ASP.Net 与 AJAX? (有解决方法吗?)
    • C# ASP.Net + AJAX 控制工具包?它有帮助吗? (使用 AsyncFileUpload 控件)
    • C# ASP.Net + jQuery 控件? (我从 JavaScript 获取数据不会有问题吗?)
    • C# ASP.Net + iFrame? (不是最优雅的解决方案)

【问题讨论】:

  • 你有没有想过用 iFrame 来伪装它?
  • @DaveZych:感谢您的建议。是的,我考虑过这一点,但是,由于这不是最“优雅”的解决方案,我希望得到其他人的意见。
  • 如果旧版浏览器不是问题,HTML5 文件 API 将允许用户将图像插入页面而不上传。

标签: c# jquery asp.net ajax file-upload


【解决方案1】:
  1. 您可以使用的 cookie 总量限制为几千字节,因此这不是存储文件的可行选项。所以会话将是唯一剩下的。还可以考虑将文件保存在文件系统中,如果不使用则将其删除,因为将文件存储在内存(会话)中会限制您一次可以处理的用户数量。

  2. 不,对于上传文件等功能,您不必担心。搜索引擎在扫描页面时不会尝试使用此类功能。

您可以在支持直接文件访问的浏览器中使用 AJAX 上传,但如果您需要支持所有浏览器,则无法发布帖子。但是,帖子不必最终加载新页面,您可以将表单放入 iframe 中,或者将表单的目标指向 iframe。

【讨论】:

  • 感谢您的所有回答。我已经考虑过 iFrame 选项,但是因为这是我知道如何做到这一点的“唯一方法”。我再等一会儿,看看其他人的意见。
  • +1。 @Marco,POST 是唯一可以在 HTML/JS 中跨浏览器工作的解决方案 - 所以无论是整个页面回发还是 IFrame 回发。
猜你喜欢
  • 2010-10-30
  • 1970-01-01
  • 2023-02-19
  • 2010-11-26
  • 2017-11-02
  • 2015-05-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多