繁体   English   中英

使用Web表单通过HTTP POST上传文件的最佳方法是什么?

[英]What is the best way to upload a file via an HTTP POST with a web form?

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

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

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

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

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

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

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

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

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

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

HTH

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

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

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

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

看看什么http://www.gmail.com确实在IE和FX,当你连接东西的电子邮件。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM