你的位置:澳门网 > 技术专栏 >

你所知道 不知道的「文件上传」

2018-11-20 23:19 点击:

  本文从文件上传的三个阶段:「上传前」、「上传时」、「上传后」来说明作者现在已知的所有文件上传问题,来看看~

  好久没有动笔了,久到都快要忘记文字应该怎么写、开头怎么写。最近做完了一个内部系统,趁下一个还在路上,总结一下在这个系统里遇到的「文件上传」问题。当我在准备这篇文章的素材的时候,发现自己在做「文件上传」时仍有部分细节没有考虑到,产品之路还很长,仍需不断总结、不断努力呀。

  涉及多方沟通的系统,肯定是需要文件往来,此时上传文件就成了系统不可或缺的功能。不上传肯定是不行的啊,任务流会断开,大家都不舒服。

  我会从「文件上传」的「上传前」、「上传时」、「上传后」三个阶段来说明我现在已知的所有文件上传问题。

  支持什么样的文件格式? 图片?psd?pdf?word?excel?zip?rar?全部?

  上传过程中是否要显示上传进度?上传进度怎么处理?通过浏览器上传文件是无法获取文件上传进度的。

  上传失败时最大重试次数?一次上传失败就算失败?还是在用户无感知的情况下上传 3 次失败才算失败?

  上传的文件尤其是图片是否需要压缩?压缩规则是什么?(什么时候需要压缩?怎么压缩?期望结果是什么?)是否需要存储原图?

  (1)文件什么时候上传到服务器?选择文件后自动上传?绑定其他事件触发上传?

  (2)上传后的文件是否需要预览?预览的规则是什么?直接缩放?显示中间部分?

  (5)上传后的文件是否需要重命名?重命名的规则是什么?按照时间随机数?不重命名可能出现什么问题?

  关于 psd 文件在浏览器中的上传:chrome 浏览器会把它当作 image 文件上传,剪切板粘贴会转为 png 图片上传;safari 浏览器会把它当作 file 文件上传,剪切板不能粘贴该文件上传。至于其它浏览器是怎么处理的,我们没做兼容,如果你有兴趣,可以研究之后告诉我。

  坑2 和坑3 其实是一个问题,都是因为没有对用户上传的文件进行重命名或特殊字符进行过滤导致的。踩了坑之后,才去研究了一下,发现钉钉也没有处理特殊字符的问题,图片缩略图显示有问题,心里一阵窃喜。

  不过,现在再去看的时候,发现钉钉已经把这个问题修复了,大家都是在让自己的产品越来越好。

  支持拖拽这种上传,一定要设置足够大的拖拽区域,不然拖拽这个功能就很难用,还不如点击上传。上线之后,用户也不太喜欢用,那么开发这个功能的意义也就不大。