使用纯 HTML4 和纯 JavaScript 时,对于用户文件的操作实际上只有一种可能:

服务器发送一个包含类似以下表单的网页:

<form action="/upload_handler" method="post">
  <input type="file" />
</form>

然后,浏览器允许用户选择一个文件,并将其上传。但在这种情况下,客户端的 JavaScript 无法:

  1. 查看文件数据;
  2. 取消文件传输;
  3. 显示上传进度条。

实现更多功能的需求

如果希望 JavaScript 在文件上传之前对文件有所了解(例如立即取消过大的文件传输,而不是等上传完成后提示“文件太大”;或者显示上传进度条),仅靠纯 HTML4 和 JavaScript 是无法实现的。


常见替代方案

要实现这些功能,需要借助其他技术或现代浏览器的支持:

  1. 使用支持 HTML5 文件 API 的现代浏览器:
    HTML5 提供了 File API,可以让 JavaScript 访问文件元数据(如文件大小、类型)以及文件内容。

  2. 使用 Flash:
    可通过一个小型的 Flash 工具(类似 Gmail 用于绘制进度条的小工具)来实现文件选择和进度显示。

  3. 使用 Java Applet:
    Java Applet 可以为文件上传提供更高的控制权限,但其使用已逐渐减少。

  4. 使用 ActiveX 控件:
    在一些特定环境(如 IE 浏览器)中,ActiveX 控件可以用于文件操作,但需要用户额外的安全许可。


参考文献

  1. RFC 1867: 提到 HTML 文件上传功能的技术规范。
  2. 获取文件上传大小: 在上传之前获取文件大小的可能性。
  3. 通过 Ajax 实现文件上传: 利用现代技术提高用户体验的案例。
  4. 文件 API: W3C 关于文件 API 的最后调用工作草案(2013 年 9 月 12 日)。
  5. JavaScript 文件读取: 使用文件 API 在 JavaScript 中读取文件的方法。
最后修改: 2025年01月13日 星期一 15:15