aetherupload.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. <?php
  2. return [
  3. # 【分布式设置】:如启用分布式部署,此类配置项必须在应用服务器与储存服务器都进行配置。 #
  4. # 【一般设置】:只需在储存服务器配置。 #
  5. /*
  6. |--------------------------------------------------------------------------
  7. | 分布式部署
  8. |--------------------------------------------------------------------------
  9. |
  10. | 【分布式设置】使应用服务与储存服务分离,启用后资源上传请求将会由储存服务器处理。
  11. |
  12. */
  13. 'distributed_deployment' => [
  14. 'enable' => true, # 是否启用
  15. 'role' => 'storage', # 服务器角色,支持选项: 'web', 'storage'
  16. 'web' => [ # 角色为应用服务器
  17. 'storage_host' => '', # 储存服务器的host,如'http://storage.example.com'
  18. ],
  19. 'storage' => [ # 角色为储存服务器
  20. 'middleware_cors' => '', # 跨域中间件AetherUploadCORS类在Kernel.php中注册的名称
  21. 'allow_origin' => [], # 跨域中间件允许的应用服务器来源host,如['http://www.example.com']
  22. ],
  23. ],
  24. /*
  25. |--------------------------------------------------------------------------
  26. | 启用秒传功能
  27. |--------------------------------------------------------------------------
  28. |
  29. | 【一般设置】需要安装redis服务和predis扩展包。
  30. |
  31. */
  32. 'instant_completion' => false,
  33. /*
  34. |--------------------------------------------------------------------------
  35. | 上传根目录名
  36. |--------------------------------------------------------------------------
  37. |
  38. | 【一般设置】位于 storage/app/ 下,修改默认值后需执行artisan命令aetherupload:groups生成对应目录。
  39. |
  40. */
  41. 'root_dir' => 'storage/app/',
  42. /*
  43. |--------------------------------------------------------------------------
  44. | 上传分块大小(B)
  45. |--------------------------------------------------------------------------
  46. |
  47. | 【一般设置】建议1MB~4MB之间,较小值占用内存少、效率低,较大值占用内存多、效率高,需要小于web服务器和php.ini中的上传限值。
  48. |
  49. */
  50. 'chunk_size' => 1000000,
  51. /*
  52. |--------------------------------------------------------------------------
  53. | 子目录生成规则
  54. |--------------------------------------------------------------------------
  55. |
  56. | 【一般设置】分为按年份、按月份、按日期、常量subdir。
  57. |
  58. | 支持选项: 'year', 'month', 'date', 'const'
  59. |
  60. */
  61. 'resource_subdir_rule' => 'month',
  62. /*
  63. |--------------------------------------------------------------------------
  64. | 头文件储存方式
  65. |--------------------------------------------------------------------------
  66. |
  67. | 【一般设置】头文件储存disk的配置名称,如果为"redis",需在config/filesystems.php中添加以下配置。
  68. | 'disks' => [
  69. | ...
  70. | 'redis' => [
  71. | 'driver' => 'redis',
  72. | 'disable_asserts'=>true,
  73. | ],
  74. | ...
  75. | ]
  76. |
  77. | 支持选项: 'local', 'redis'
  78. |
  79. */
  80. 'header_storage_disk' => 'local',
  81. /*
  82. |--------------------------------------------------------------------------
  83. | 资源文件后缀名黑名单
  84. |--------------------------------------------------------------------------
  85. |
  86. | 【一般设置】被禁止资源文件的后缀名集合,凡是匹配成功的资源文件均会被阻止上传,可在一定程度上防范恶意文件上传。
  87. |
  88. */
  89. 'forbidden_extensions' => ['php', 'part', 'html', 'shtml', 'htm', 'shtm', 'xhtml', 'xml', 'js', 'jsp', 'asp', 'java', 'py', 'sh', 'bat', 'exe', 'dll', 'cgi', 'htaccess', 'reg', 'aspx', 'vbs'],
  90. /*
  91. |--------------------------------------------------------------------------
  92. | 额外Mime-Type
  93. |--------------------------------------------------------------------------
  94. |
  95. | 【一般设置】如上传文件类型在MimeType.php中不存在,可在此额外添加Mime-Type,格式参照'jpg' => 'image/jpeg'。
  96. |
  97. */
  98. 'extra_mime_types' => [],
  99. /*
  100. |--------------------------------------------------------------------------
  101. | 中间件
  102. |--------------------------------------------------------------------------
  103. |
  104. | 【一般设置】上传预处理、上传分块、文件展示、文件下载时的路由中间件。
  105. |
  106. */
  107. 'middleware_preprocess' => [], # 上传预处理时的路由中间件
  108. 'middleware_uploading' => [], # 上传文件分块时的路由中间件
  109. 'middleware_display' => [], # 文件展示时的路由中间件
  110. 'middleware_download' => [], # 文件下载时的路由中间件
  111. /*
  112. |--------------------------------------------------------------------------
  113. | 路由
  114. |--------------------------------------------------------------------------
  115. |
  116. | 【一般设置】上传预处理、上传分块、文件展示、文件下载的路由。
  117. |
  118. */
  119. 'route_preprocess' => '/aetherupload/preprocess', # 上传预处理的路由
  120. 'route_uploading' => '/aetherupload/uploading', # 上传文件分块的路由
  121. 'route_display' => '/aetherupload/display', # 文件展示的路由
  122. 'route_download' => '/aetherupload/download', # 文件下载的路由
  123. /*
  124. |--------------------------------------------------------------------------
  125. | 宽松模式
  126. |--------------------------------------------------------------------------
  127. |
  128. | 【一般设置】在某些特殊场景,通过上传前跳过计算hash,可缩短总耗时。此选项开启后,无法进行秒传和完整性校验。默认不启用。
  129. |
  130. | 注意:开启后需在前端同时调用setLaxMode(true)方法。
  131. |
  132. */
  133. 'lax_mode' => false,
  134. /*
  135. |--------------------------------------------------------------------------
  136. | 资源分组
  137. |--------------------------------------------------------------------------
  138. |
  139. | 【一般设置】可设置多个不同分组,各自拥有独立配置。新增分组并配置后,需执行artisan命令aetherupload:groups创建对应目录。
  140. |
  141. */
  142. 'groups' => [
  143. 'file' => [ # 分组名
  144. 'group_dir' => 'file', # 分组目录名
  145. 'resource_maxsize' => 0, # 被允许的资源文件最大值(B),0为不限制,32位系统最大值为2147483647
  146. 'resource_extensions' => [], # 被允许的资源文件扩展名(白名单),空为不限制
  147. 'event_before_upload_complete' => '', # 上传完成前触发的事件(完整临时文件),PartialResource类的实例被注入
  148. 'event_upload_complete' => '', # 上传完成后触发的事件(完整资源文件),Resource类的实例被注入
  149. ],
  150. ],
  151. ];