专栏名称: 狗厂
目录
相关文章推荐
51CTO官微  ·  鸿蒙+AI,共建智慧园区2.0 ·  昨天  
51好读  ›  专栏  ›  狗厂

PHP大文件分片上传

狗厂  · 掘金  ·  · 2018-05-14 10:52

正文

一、前言

  • 在网站开发中,经常会有上传文件的需求,有的文件size太大直接上传,经常会导致上传过程中耗时太久,大量占用带宽资源,因此有了分片上传。
  • 分片上传主要是前端将一个较大的文件分成等分的几片,标识当前分片是第几片和总共几片,待所有的分片均上传成功的时候,在后台进行合成文件即可。

二、开发过程中遇到的问题

  1. 分片的时候每片该分多大size?太大会出现“413 request entity too large”
  2. 分片上传的时候并不是严格按照分片的序号顺序上传,如何判断所有的分片均上传成功?
  3. 合成文件的时候如何判断保证合成一个完整的文件而不出错?多个分片同时上传的时候,读写文件没有独占锁的时候会导致合成错误。

三、问题解决

  1. 当出现413的时候,修改了 nginx.conf 和php.ini
    (1)nginx中添加client_max_body_size和client_body_buffer_size
    (2)php.ini添加post_max_size 和 upload_max_filesize
  2. 重启nginx和php-fpm
  3. 代码逻辑梳理和分享
    (1)先获取当前分片是第几片以及总共几片

图片描述







请到「今天看啥」查看全文