HTML 使用表单将数据发送到 Web 服务器。数据可以包含在 url 参数中或嵌入 HTML 请求正文中。但是对于一个文件,我不知道它是如何工作的。我想知道这一点,因为我发现在 Web 和桌面应用程序上上传文件之间存在一些差异。
桌面应用程序通常提供一个文本框以允许用户输入文件的区域设置路径。但是对于 Web 应用程序,文本框通常是只读的。当使用浏览按钮选择文件时,它会显示文件路径。这只是桌面和网络之间的设计问题吗?
HTML 使用表单将数据发送到 Web 服务器。数据可以包含在 url 参数中或嵌入 HTML 请求正文中。但是对于一个文件,我不知道它是如何工作的。我想知道这一点,因为我发现在 Web 和桌面应用程序上上传文件之间存在一些差异。
桌面应用程序通常提供一个文本框以允许用户输入文件的区域设置路径。但是对于 Web 应用程序,文本框通常是只读的。当使用浏览按钮选择文件时,它会显示文件路径。这只是桌面和网络之间的设计问题吗?
问题有点不清楚,但关于 Web 应用程序(或 HTML 表单)的一个重要方面是它们是沙盒化的,不能直接访问本地文件。所以文件上传选择器不允许直接输入文件名(可能是脚本),但只能通过操作系统(或浏览器)提供的文件选择 UI(应用程序或页面不能乱用)。
一旦用户选择了文件,页面就可以访问它,但它不能自己(或偷偷地)进行选择。
最近的趋势是以相同的方式锁定桌面应用程序。例如,请参阅 Apple 的沙盒限制,该限制也不允许应用在没有用户干预的情况下打开随机文件。
这只是桌面和网络之间的设计问题吗?
文件上传表单的实现,无论是桌面还是网络,对于最终结果来说在很大程度上并不重要。桌面和 Web 控件都可以使用路径字符串或完整的文件导航器,尽管桌面应用程序的实现可能会有所不同。唯一的另一个区别是目的地:桌面应用程序倾向于解析内存中的文件并以某种方式呈现它,而 Web 应用程序几乎总是将其上传到服务器(尽管这可能会发生变化:参见HTML5 文件 API),然后进一步对其进行操作。