引用 楼主 CKAOS 的回复:

目前负责一个项目,ASP.NET的,做一个网盘系统,别的都弄好了,只差一个下载文件夹的功能未实现,只能在服务器端打包成压缩文件,再发回浏览器。如何直接下载文件夹,不是压缩文件,谢谢大神!

因为这个需求比较特殊,所以真正的解决方案不是很多,目前为止大概有2种:一种是文件夹压缩下载,一种就是基于控件。
虽然这个需求比较特殊但是却是非常有意义,它的意义在于大幅度提升了用户体验,和当年QQ邮箱首推大文件上传功能的意义一样重大。在QQ邮箱之前没有任何一个邮箱和网盘有这个功能,虽然当时上传大文件的需求可能不多,但是却是存在的。只不过这个小需求不被一般的公司重视更不被广大开发人员重视。最终还是被腾迅抓住这个机会一举成为行业领先地位。

再回过头来看看早先的领导品牌163邮箱却眼睁睁的看着QQ邮箱的崛起。什么原因呢?当然是不够重视用户体验,当时而言163邮箱已经是行业老大,他不需要花这么大的力气的来满足小众需求,这点需求他根本看不上。但是对于QQ邮箱来说他需要去争取哪怕很小的一部分用户,只有这样他才有发展的机会。

我们再看看第二块市场:网盘。实际上在10年前网盘就有了,而且当时用户量还比较大,但是那么大的市场居然没有一家公司把用户体验这块做好,当时用户想传大点的文件那真是一个蛋疼,首先你要自已把文件用工具分成几块,然后一块一块的上传到网盘中。当时居然连批量上传的功能都还没有。但就是这么糟糕的用户体验仍然有大量的用户在使用,用现在的话来讲这真是刚需。

但是遗憾的是这些网盘服务商虽然抓住了这个机会但是没把握住,起了个大早,赶了个晚集,错,连晚集都没赶上,当年那些火爆的网盘现在你还能找到几家?现在一提到网盘大家想到的就是百度,360,115网盘,谁还记得10年前的网盘服务商?但你要说现在的这些网盘和10年前的那些网盘有什么重大的区别吗,好像也没有什么重大的创新出现。无非就是可以秒传文件,可以传大文件,可以断点续传。但是就这些用户体验的改进才让他们一步步成为行业老大。虽然这些功能是QQ邮箱先搞出来的,但是百度也会学啊。

如果你要说需求难度大,不好实现。现在有哪个需求很简单?简单的需求还轮得到你来做,CSDN上面几百万人开发者随便一个都能搞得定的问题还指望你吗? QQ邮箱当时做大附件上传功能难吗?当然很难,QQ邮箱那帮人也是做了5年才做稳定的。花了相当大的时间和精力来做。难道你就指望做个新闻管理系统,新闻的增删改查,像这样的功能你做的再多有什么用?

从网盘及QQ邮箱的发展史我们可以得出一个很重要的经验,就是要重视每一个需求,哪怕这是一个小众需求,但是说不定哪天他就可能会引领一个潮流。

扯了点题外话,现在回到正题。先说第一种解决方案,文件夹压缩,其实这个方案很令人纠结,不仅是开发人员实现的纠结,用户用起来也很纠结,但是没办法,谁让W3C委员会没定义一个文件夹的HTTP协议呢。所以你改变不了世界就学会适应吧,文件夹压缩就是在这种场景下面诞生的。当然也是解决了这个问题,虽然有点纠结,但是忍忍也就过去了。不然你想怎样?北京房价那么高了,全国人民都在抱怨,有用吗?房价降了吗?没有,所以光抱怨是没用的。
不过站在技术角度还是要说一点,这种方案之所以纠结就是它虽然可以实现但是很占服务器空间,小的文件夹还好说一点,要是文件夹比较大,那就相当占空间了,一个用户下载一次就要创建一个,用户多了,这个创建的临时文件就多了,创建的越多等待的时间就越长,最终会严重影响用户体验。
假如果一个文件夹里面全是G级别的文件,同时有几十个,那创建这么一个临时文件估计就要半天,然后再下载,这时间可就成指数级的增加了,下载过程中再来几次网络异常或者中断,那你基本上就可以成功把用户逼疯了。

基于控件的方案目前只有:Xproer.HttpDownloader

基于控件的方案也有一个缺点,就是需要每一个用户第一次使用时要安装一下控件,后面再使用时就不需要安装了。当然所有基于控件的解决方案都存在这个问题。但这个问题不大,因为控件小,安装时间也比较短大概3秒左右。

http://bbs.csdn.net/topics/392010487

QQ邮箱打败163邮箱的过程(重视用户体验的结果)的更多相关文章

  1. dedecms织梦自定义表单发送到邮箱-用163邮箱发送邮件

    https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&tn=monline_3_dg&wd=dedecms 邮箱&oq=d ...

  2. phpmailer使用qq邮箱、163邮箱成功发送邮件实例代码

    以前使用qq邮箱.163服务器发送邮件,帐号直接使用密码,现在不行了,得使用授权码,简单记录下 1.首先开通POP3/SMTP服务,qq邮箱——帐号——设置,找到POP3/SMTP点开启,输入短信会有 ...

  3. jeakins配置邮件通知,附带解决535报错:authentication failed,如果发现测试邮件可以发出,项目构成无法发出邮件,请开启SSL认证,端口号改为(465),qq邮箱、163邮箱通用

    535报错解决方案:调用163邮箱服务器来发送邮件,我们需要开启POP3/SMTP服务,这时163邮件会让我们设置客户端授权码,这个授权码替代上面代码部分的passwd即可成功发送邮件 如果设置的邮箱 ...

  4. python使用qq邮箱向163邮箱发送邮件、附件

    在生成html测试报告后 import smtplib,time from email.mime.text import MIMEText from email.mime.multipart impo ...

  5. 使用PHPMail发送邮箱(163邮箱为例)

    1.下载phpmail压缩包,并解压. 2.创建index.html文件.并写入代码. <form action="" method="post"> ...

  6. ios9邮箱添加163邮箱

    电脑登陆163邮箱➡️设置➡️开启pop3/smtp/imap功能➡️保存.开启后系统会给你个"客户端授权密码",同时会发短信到你手机里. 打开手机,设置➡️邮件,通讯录,日历➡️ ...

  7. python SMTP 发送邮件 阿里企业邮箱、163邮箱 及535错误

    class SendEmail(object): def __init__(self, type, to_addr): self.to_addr = to_addr self.sys_date = t ...

  8. python 自动打包,发送邮件(包括附件)至多个收件人(qq邮箱,163邮箱)

    -----------------------------打包部分---------------------------------- import zipfile def zipDir(dirpat ...

  9. python练习-使用163邮箱发送邮件

    具体代码如下> #密码等敏感信息已经用****替换 import smtplib,sys from email.mime.text import MIMEText from email.head ...

随机推荐

  1. python 爬取36kr 7x24h快讯

    url为https://36kr.com/newsflashes,抓包后发现第一次的新闻内容就是包含在<script>var props={}></script>标签中, ...

  2. 【23.33%】【hdu 5945】Fxx and game

    Time Limit: 3000/1500 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) Total Submission(s ...

  3. Android Studio打包apk,aar,jar包

    转载请标明出处:一片枫叶的专栏 文本我们将讲解android studio打包apk,aar,jar包的相关知识.apk包就是android系统的安装包,这里没什么好说的,aar包是android中独 ...

  4. gcc安装教程(学习Linux编程只需安装cygwin)

    gcc安装教程(windows版本) —最好的C/C++编译器,没有之一 windows下的gcc有两个版本mingw和cygwin,二选一就好 已学会C++,做工程,建议用mingw 用cygwin ...

  5. [Android]TextView点击获取部分内容

    TextView控件本身有很多属性可以进行控制,如果要获取内容只需要getText()方法就可以实现,同时也可以为TextView设置各种监听器.但是,如果想要实现点击获取TextView内部的部分内 ...

  6. 浅谈Linux下各种压缩 解压命令和压缩比率对比

    Linux下压缩.解压命令五花八门,不像在windows下一个winrar打遍天下无敌手,清一色的.rar .zip格式. 比如,Linux下常用的tar tar.gz tar.bz2 .Z等等不一而 ...

  7. 将字符串转换成xml并取得对应的值

    如数据库中有一个字段保存了xml格式的一串字符串: <?xml version="1.0" encoding="utf-16"?><Array ...

  8. MSVC编译Boost的几种链接方式

    折腾了好几个小时,终于理清了Boost链接的组合方式,记录一下. A1.动态链接Boost的动态库A2.静态链接Boost的动态库 B1.动态链接VC运行库B2.静态链接VC运行库 那么这样就有2x2 ...

  9. Information Centric Networking Based Service Centric Networking

    A method implemented by a network device residing in a service domain, wherein the network device co ...

  10. 机器学习:DeepDreaming with TensorFlow (二)

    在前面一篇博客里,我们介绍了利用TensorFlow 和训练好的 Googlenet 来生成简单的单一通道的pattern,接下来,我们要进一步生成更为有趣的一些pattern,之前的简单的patte ...