引用 楼主 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. PPT之SmartArt功能

    在PPT中,我们经常看到这样的漂亮的组合图标: 他们是怎么做出来的呢?其实用ppt自带的SmartArt功能就能做出来了. Tips:SmartArt可以直接先选择组合图标再填文字,还可以写好了文字, ...

  2. Android四大组件之Activity--管理方式

    1. 概览 Activity的管理有静态和动态两层涵义: 静态是指Activity的代码组织结构,即Application中声明的Activity的集合,这些Activity被组织在一个APK中,有特 ...

  3. Android开发入门——Andoird Studio的安装与配置

    Android的开发离不开Java,仍然需要对Java进行安装与配置,所以我写了上一篇文章,Java的安装与配置. 开始进行Android Studio的安装与配置. 一.进行配置Java,如果电脑里 ...

  4. 一个2013届毕业生(踏上IT行业)的迷茫(2)

    初中的时光是一段艰辛,但幸福的时光,在这一段时光中同样我遇到了我人生中第二个贵人.记得在小学毕业的那个暑假里,我知道上了初中会开一门叫做英语的课程,那时候在我们那里有好多上过初中.高中的在我们小学开英 ...

  5. delphi之IOCP学习(一)

    困扰已久的网络通信(IOCP:完成端口),今天终于揭开她的神秘面纱了,之前百度N久还是未能理解IOCP,网络上好多博文都没有贴出源码,初学者很难正在理解IOCP并自己写出通信例子 ,经过努力,今天自己 ...

  6. Cocos2d-X中国象棋的发展《五岁以下儿童》摆棋

    在博客上,以实现创建的游戏场景.而一些button,因为button落实到事件作出详细答复,需要使用一些功能摆棋.为此我特意button上的背面的具体实施, 在摆棋前先理清一下摆棋的思路: 1.创建一 ...

  7. AI2XAML's Bug

    原文:AI2XAML's Bug My picture is like this: I use Adobe Illustator CS to draw the outline of that, I s ...

  8. Efficient store queue architecture

    One embodiment of the present invention provides a store queue that applies the stores to a memory s ...

  9. 简明Python3教程 14.输入输出

    简介 一些情况下你不得不让程序与用户进行交互.例如,你需要从用户处得到输入然后输出计算结果.我们可以分别通过input()和print()函数做到这些. 对于输出,我们还可以使用str(string) ...

  10. 简明Python3教程 首页

    A Byte of Python 'A Byte of Python' is a free book on programming using the Python language. It serv ...