通过带有Web表单的HTTP POST上传文件的最佳方法是什么?
基本上,有比这更好的东西:
<input type="file" name="myfile" size="50">
首先,"浏览"按钮在每个浏览器上看起来都不同。与表单上的"提交"按钮不同,我们必须想出一些别具一格的方式来设置样式。
其次,没有进度指示器显示我们已上传了多少文件。通常,我们必须采用某种客户端方法来禁用多个提交(例如,将"提交"按钮更改为显示"正在提交表单...请稍候"的已禁用按钮),或者发出巨大的警告。
是否有不使用Flash或者Java的良好解决方案?
Yaakov:该产品看起来正是我在寻找的产品,但价格为1000美元,并且专门针对" ASP.NET"。是否有任何开源项目涵盖相同或者相似的功能?
解决方案
回答
没错,文件上传控制绝对落后于时代。希望在将来的asp.net版本中可以解决此问题。
尽管要花一些钱,但我发现Telerik上载控件具有所需的所有功能,包括样式和进度更新(它还优化了大型上载的内存)。
回答
如果我们不想涉及Flash,Java或者ActiveX等其他技术,则可以使用文件上传框。
使用纯HTML,我们几乎只能受限于我们所描述的体验(没有进度条,重复提交等)。如果我们愿意使用某些javascript,则可以通过提供有关上传正在进行中甚至显示上传进度的反馈来解决一些问题(这是黑客行为,因为我们不必进行完整的往返操作即可服务器并返回,但至少可以正常工作)。
如果我们愿意使用Flash(几乎在任何地方和许多平台上都可以使用Flash),则可以克服几乎所有这些问题。快速搜索就发现了两个这样的组件,它们都是免费的和开源的。我从未使用过它们,但是它们看起来不错。顺便说一句,Flash也不是没有问题,例如,当使用多文件上传器进行幻灯片共享时,浏览器一直在不断崩溃:-(
当前最好的解决方案可能是动态检测用户是否有Flash,如果是这种情况,请为她提供上载器的Flash版本,同时仍然可以选择基本的HTML。
高温超导
回答
我们可以看一下Fancy Upload脚本。尽管它使用闪光灯,但看起来仍然很棒。
回答
这里的问题是浏览器专门用于阻止任何更改基本文件上载输入控件的操作。例如,我们无法使用javascript进行更改。
原因是安全性,如果我可以编写脚本,可以建立一个页面,当我们访问它时,它会从硬盘发送给我各种文件。不太好。
目前有多种解决方法,但是IE和FX之间是不同的(我不了解Safari,Opera等)。
当我们将某些内容添加到电子邮件时,请查看http://www.gmail.com在IE和FX中的功能。
我想看到那个垃圾"浏览"按钮,它告诉我我没有让任何意外的事情进入。