【发布时间】:2010-12-11 22:45:17
【问题描述】:
有没有办法构造另一个可以将文件发布到服务器的元素?
不使用标签
<input type='file'>
【问题讨论】:
-
如果您查看将元素发布到服务器,您会看到其中很多被解析为数组或简单类型,但文件只能使用该标签发送,我认为这有问题。 (您甚至可以在浏览器地址行中向服务器发送文本)。
标签: php javascript
有没有办法构造另一个可以将文件发布到服务器的元素?
不使用标签
<input type='file'>
【问题讨论】:
标签: php javascript
如果您想进行拖放操作,可以使用 HTML5 中的新 drag and drop stuff(在撰写本文时在 Firefox 和 Chrome 中支持)。这不需要input type='file'。
否则,您无法在没有input type='file' 元素的纯 HTML+JavaScript 中执行此操作。作为thejh points out(在一个现已删除的答案中),您可以通过使用File API 来执行此操作而无需实际提交表单,但这仍然需要使用input type='file'(尽管它不需要提交表单并刷新这页纸)。 Here's an example(此处为 SO)使用 JavaScript 和 File API 读取文件;从那里开始,通过 ajax 发送它是一个简单的步骤。这对于在支持 File API 的浏览器上提供增强的用户体验(进度条、不支持的文件类型的早期检测和报告、过大文件的早期检测和报告等)非常有用。
当然,您可以使用 Flash 和(签名的)Java 小程序等非 HTML/JavaScript 技术来实现这一点,但如果您正在寻找“纯”无插件机制,那么旧的 @987654328 @ 仍然是你唯一的选择。不过,您可以在支持它的浏览器上通过 File API 逐步增强它,这很有用。
【讨论】:
你可以通过FLASH来实现,但是我认为html中没有其他的方式。
为什么你不想使用输入?
无论如何,看看uploadify(不错的jQuery插件),可能会有所帮助:http://www.uploadify.com/
【讨论】: