5

基本上,比这更好的东西:

<input type="file" name="myfile" size="50">

首先,browse每个浏览器上的按钮看起来都不同。与submit表单上的按钮不同,您必须想出一些hack-y方式来设置它的样式。

其次,没有进度指示器显示文件上传了多少。您通常必须实现某种客户端方式来禁用多次提交(例如,将提交按钮更改为显示“表单提交...请稍候。”的禁用按钮)或发出巨大的警告。

有什么不使用 Flash 或 Java 的好的解决方案吗?

Yaakov:那个产品看起来正是我想要的,但成本是 1000 美元,而且它专门用于ASP.NET. 是否有任何开源项目涵盖相同或相似的功能?

4

4 回答 4

9

如果您不想涉及 Flash、Java 或 ActiveX 等其他技术,文件上传框就是我们目前所处的位置。

使用纯 HTML,您几乎受限于您所描述的体验(没有进度条、重复提交等)。如果您愿意使用一些 javascript,您可以通过提供上传正在进行的反馈甚至显示上传进度来解决一些问题(这是一个 hack,因为您不应该进行完整的往返服务器并返回,但至少它可以工作)。

如果您愿意使用 Flash(几乎可以在任何地方和许多平台上使用),您几乎可以克服所有这些问题。快速谷歌搜索发现了两个 这样的组件,它们都是免费开源的。我从来没有用过它们,但它们看起来不错。顺便说一句,Flash 也不是没有问题,例如,当使用多文件上传器进行幻灯片共享时,浏览器不断在我身上崩溃:-(

目前最好的解决方案可能是动态检测用户是否有 Flash,如果是这样,给她上传器的 Flash 版本,同时仍然可以选择基本的 HTML 版本。

高温高压

于 2008-08-15T07:54:33.063 回答
1

您可以查看Fancy Upload脚本。虽然它使用闪光灯,但它仍然看起来很棒。

于 2008-08-15T07:58:28.830 回答
1

这里的问题是浏览器专门阻止任何更改基本文件上传输入控件的内容。例如,您无法使用 javascript 更改它。

原因是安全性 - 如果我可以编写脚本,我可以构建一个页面,当您访问它时,它会从您的硬盘向我发送各种文件。不太好。

目前有各种解决方法,但在 IE 和 FX 之间是不同的(我不知道 Safari、Opera 等)。

当您将某些内容附加到电子邮件时,请查看http://www.gmail.com在 IE 和 FX 中的作用。

我想看看那个垃圾的“浏览”按钮——它告诉我我不会让任何意外的东西进来。

于 2008-08-15T08:52:06.397 回答
0

诚然,文件上传控制绝对是落伍了。希望这将在未来的 asp.net 版本中得到解决。

虽然要花一些钱,但我发现Telerik 上传控件具有您正在寻找的所有功能,包括样式和进度更新(它还优化了大型上传的内存)。

于 2008-08-15T05:56:22.227 回答