图片上传在现在的应用开发中可谓是家常便饭,基本上每个应用都会涉及到。小到头像图标,大到社交照片等等。对于传统的Web应用来说,图片上传可以说是一个很微不足道的需求了,只是这样的一个小需求,想要做到极致,却并非易事。

需求多变

你可能会觉得就是简单的文件上传还需要什么需求呢?对于图片上传来说,从业务层面来说要涉及到的技术点很多。比如图片大小的限制,图片格式的限制,上传后是否需要压缩图片。特别是当你图片的上传量大了之后,通过怎样的方式来管理这么多的图片资源。而这些都是我们开发中需要考虑的点。

用户体验

用户体验这一块可谓是仁者见仁智者见智,但是不外乎的几个方面都一样。 重中之重的就是上传进度的显示,其实在于产品的设计过程中,如果没有进度显示用户心中会有焦虑感。当他无法感知到上传进度的时候,用户的流失率就会提高。 还有一个就是上传时的缩略图预览,你要让用户知道他现在选择的是那一张图,有没有选择到了不可描述的图片,而这个在提升用户对产品的认可度上大有裨益。 最后一个对于已上传图片的删除与位置拖动,其实这个需求在用户体验上来说主要还是要根据具体的业务,如果是后台的应用那就完全没有必要了;而如果是社交分享类的,那就可以说是重中之重了。

容错处理

一份良好健壮的代码,对于错误的处理和提示不亚于用户体验。当用户在上传出问题的时候却没有相应的提示,想想看这时候他的心里会是怎样的。

对于错误处理要包括图片太大,图片格式不正确以及上传数量超限制。对于服务端的错误也要给出相应的提示,这样才算是一个完整的图片上传组件。

支持并发

其实这一块并不能算作图片上传中的一部分,但还是值得来讲一下。传统Web应用中,图片都是传到服务端直接存储,这样如果上传量大的话,服务器的带宽和磁盘就成了瓶颈,这时或许会提高带宽上SSD等。但是在云时代,或许选择云存储是个更好的选择。传统架构都是都是先传到服务器然后再从服务器到云存储,这样瓶颈依旧是在服务器。其实我们完全可以直传到云存储,把压力转接到专业的人来做,我们专注于业务即可。

对于一个简单的图片上传其实还是有很多的知识点在里面,前些日子花了点时间开源了一个这样的Laravel组件,支持直传图片到第三方云存储,使用起来非常方便,欢迎Star。

https://github.com/wh469012917/laravel-uploader

如何正确上传一张图片?相关推荐

  1. [前台]---js重复上传一张图片两次,第二次失败的解决办法和思路

    js重复上传一张图片两次,第二次会失败,解决办法就是修改input的value值. 先上代码: <input style="display:none" type=" ...

  2. 高手教你PHP上传多张图片

    高手教你PHP上传多张图片 对于我们来说上传一张图片是非常简单的事情,这里教大家一个关于PHP上传多张图片的代码分析,希望对大家有帮助. 学习PHP时,你可能会遇到PHP上传多张图片问题,这里将介绍P ...

  3. ajax请求多张图片数据库,ajax上传多文件,一次上传多张图片

    ajax上传多文件,一次上传多张图片 作者:PHPYuan 时间:2018-11-04 03:41:44 使用ajax上传文件,指望这个对象:let fd = new FormData(); html ...

  4. php上传多张图片为什么只显示一张,javascript,_js多张图片上传 也拿到多张图片的路径 在页面上展示只显示一张?只执行了一次???,javascript - phpStudy...

    js多张图片上传 也拿到多张图片的路径 在页面上展示只显示一张?只执行了一次??? js多张图片上传 也拿到多张图片的路径 在页面上展示只显示一张?只执行了一次??? self.$els.upload ...

  5. 如何在IPFS里面上传一张图片

    之前有好几人问过小编,想在IPFS里面上传一张图片.如何做? 今天小编就讲一下如何在IPFS里面上传.下载文件? 1 下载IPFS软件 下载地址:https://dist.ipfs.io/#go-ip ...

  6. okhttp上传图片和其他参数_Android中Okhttp3实现上传多张图片同时传递参数_放手_前端开发者...

    之前上传图片都是直接将图片转化为io流传给服务器,没有用框架传图片. 最近做项目,打算换个方法上传图片. Android发展到现在,Okhttp显得越来越重要,所以,这次我选择用Okhttp上传图片. ...

  7. iOS -- 上传多张图片 后台(PHP)代码和上传一张的一样

    // 上传多张图片 - (void)send {// 设置初始记录量为0self.count = 0;self.upcount = 0;// 设置初始值为NOself.isUploadPictures ...

  8. thinkphp3.2+cropper上传多张图片剪切图片

    实现效果截图 点加号可以继续上传第二张图片 代码部<--引入cropper相关文件--> <link rel="stylesheet" href="/h ...

  9. php用jquery-ajax上传多张图片限制图片大小

    php用jquery-ajax上传多张图片限制图片大小 /*** 上传图片,默认大小限制为3M* @param String $fileInputName* @param number $size*/ ...

最新文章

  1. jsp分页显示的代码与详细步骤 复制代码
  2. RocketMQ与kafka对比(18项差异)-转自阿里中间件
  3. 中国移动手机网络私有网络连接问题解决办法
  4. git中常用命令小结
  5. clickhouse物化视图优缺点_ClickHouse 适用场景
  6. CVPR 2020 三篇有趣的论文解读
  7. Oracle Enterprises Manager 12C安装
  8. future java 多线程_Java多线程之Future与FutureTask
  9. mysql-修改密码(error-1290 (HY000): The MySQL server is running with the --skip-grant-tables option so)
  10. pandas 根据两列数据筛选dataframe
  11. Scrum Meeting 2 (2016-12-19 Mon)
  12. mysql language sql immutable_sql - PostgreSQL是否支持“不区分重音”排序规则?
  13. 卡西欧手机计算机软件,卡西欧5800计算器手机版app
  14. 前端学习笔记之品优购项目(一) 3.15
  15. VBA 字典 键值为二维数组并不断增加行
  16. 俄亥俄大学计算机科学专业,北俄亥俄大学专业都有哪些呢?了解一下!
  17. Kafka_producer
  18. android手机主板,主板芯片全解
  19. c语言中的warn函数用法,关于c ++:MSVC等同于__attribute__((warn_unused_result))?
  20. 产销存报表直接在MB5B上取数

热门文章

  1. 教你在 Centos 7 中使用 DenyHosts防止ssh暴力破解(亲测)
  2. Linux 日志定时轮询流程详解
  3. Ubuntu服务启动脚本
  4. SpringBoot的jar传递参数时,使用两个「--」横线来标记参数
  5. java网络编程,HttpClient 应用~
  6. 华为手机浏览器不支持PUT提交方式的解决方案
  7. springboot2 - 坑 - 解决put提交接收不到参数的问题
  8. <input type=“file“> change事件异常处理办法
  9. 一键去除域名非80端口,去掉域名后面带的端口号快速解决方案
  10. 【分布式】缓存穿透、缓存雪崩,缓存击穿解决方案