2008-08-15 25 views
5

基本上,什么比这更好的:使用Web表单通过HTTP POST上传文件的最佳方式是什么?

所有的
<input type="file" name="myfile" size="50"> 

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

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

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

Yaakov:该产品看起来是我正在寻找,但成本是1000美元,专门为ASP.NET.是否有任何开源项目涵盖相同或类似的功能?

回答

9

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

使用纯HTML时,您几乎受限于您所描述的体验(无进度条,双提交等)。如果您愿意使用一些JavaScript,则可以通过提供反馈意见来解决一些问题,即上传正在进行中,甚至是showing the upload progress(这是一种黑客行为,因为您不必完整地往返服务器,回来,但至少它工作)。

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

当前最好的解决方案可能是动态检测,如果用户有闪光灯,如果是这种情况,给她上传的Flash版本,同时还使其能够选择的基本HTML之一。

HTH

0

确实,文件上传控制绝对落后于时代。希望这将在未来的asp.net版本中解决。

虽然它花了一些钱,但我发现Telerik upload control具有所需的所有功能,包括样式和进度更新(它还优化了大量上载的内存)。

1

你可以看看在Fancy Upload脚本。虽然它使用闪光它仍然看起来很棒

1

这里的问题是,b rowers专门阻止任何改变基本文件上传输入控制的东西。例如,你不能用javascript来改变它。

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

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

看看http://www.gmail.com在附加东西到电子邮件中时在IE和FX中会做什么。

我想看到垃圾“浏览”按钮 - 它告诉我,我不会让任何意想不到的。

相关问题