【高州情】高州人深圳站

 找回密码
 立即加入
查看: 758|回复: 5
打印 上一主题 下一主题

由于各大浏览器都不支持FLASH,外挂了HTML5组件实现头像上传 [复制链接]

Rank: 8Rank: 8Rank: 8Rank: 8

金币
564
贡献
0
威望
7
最后登录
2026-6-12
帖子
78
积分
54
UID
2564
跳转到指定楼层
1楼
发表于 2026-5-10 21:51:51 |只看该作者 |正序浏览
FLASH最终还是没能跟上时代的步伐,被各大浏览器抛弃,我们这老破旧论坛连头像也上传不了,花了一个星期反编译了Discuz7.2的FLASH头像上传逻辑,并把这套逻辑转移到了X2身上,
. r. I* e/ y+ p+ Y0 v! @用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,4 x* v7 I: O- U: Z, c
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
, t8 c9 d4 N. }0 g
, Q0 o# O* f( A# I" R/ w2 M

) N! k) t+ x" ]' h8 V
- }6 {; l: z: j7 C2 O0 w6 r& U, O$ n8 B, L" y8 ^) V( t' L
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
- j6 _( d( l/ M7 }& t==============================8 u" p4 X2 n/ R# Y6 O
【目录结构】
( l8 t- |" x/ p! ?upload/
+ b9 `# h* A" d% x9 D1 m├── html5avatar.php        插件后端接口(核心逻辑)+ ~$ C5 R, \2 h* ~/ Y: i& c; L: @
└── template/
! R9 l; i9 ~% G        └─ default/
' E' R, o/ d3 A$ d; U            └─ home/
9 e7 P/ A3 D2 U                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)7 X# d8 H' N$ `% o* y8 z! e. y
1 B# f( t0 {; b3 C* `
【适用环境】
6 N' L) W/ @$ [9 Y- Discuz! X2 UTF-8
3 }4 R3 W: V# w- m0 O- UCenter 1.6" L+ W- F& o+ e9 z8 {4 H" `& o, P
- PHP 5.6+$ v! V: H+ z3 `9 D6 b& C4 h

3 I* s0 C: `# _# i【安装方法】
' l( g4 |' C+ J: M1. 将 upload 目录下的文件,按路径覆盖到你网站根目录( I8 d& g; h' O8 S

% O0 O* L8 A! s  F  ~) W. F2. 特别注意:
. S& s1 u4 c; s) B9 i4 L   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm
$ S* |, ?7 ]$ U% T9 \" p; @   (如果你使用了其它模板,请自行替换文件标注部分代码。)
% G) t* n* N2 ]5 l% j! ]$ R0 q. E. u' E
3. 确保目录权限:
% l/ x$ |' o# N5 H   chmod -R 755 uc_server/data/avatar- p' m4 m& {7 @, s" f) O" }: Z- i

: z9 X. n. o' r4. 进入:+ L2 t+ t" P+ V3 g* f' n
   点头像进入 →个人空间 → 编辑头像6 d) Z5 w, l' [
   即可使用 HTML5 上传
" _$ X1 ?, p4 _3 x0 j0 N( y* E. d: }8 a2 |8 }* K2 K
【说明】$ e4 B* D' j# {& O5 [3 A" w
- 会直接替换 Flash 头像入口- ~- L0 a& T. g2 |. J
- 无需安装、无需后台开启6 J  p# k) v- i! I
- 不影响 UCenter 原有逻辑2 }' ?8 d5 A  ~) w( n' g6 l9 S6 f4 A
- 保留头像简单裁剪功能(Cropper.js)
0 y9 U8 j+ s' F- 仅新增一个htnl5上传组件

! W. l1 n  W5 r$ R* n
/ a( u8 e* j7 s( \- F
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

Rank: 1

金币
53
贡献
0
威望
2
最后登录
2026-6-9
帖子
1
积分
5
UID
3000
6楼
发表于 2026-6-9 20:41:31 |只看该作者

管理员

论坛测试[砖]家

Rank: 12Rank: 12Rank: 12Rank: 12

金币
7319
贡献
615
威望
9151
最后登录
2026-10-4
帖子
1876
积分
25897
UID
10

论坛元老 网络高手 新人进步奖

5楼
发表于 2026-5-18 11:03:28 |只看该作者
原FLASH已死:
  1. function parseflash($w, $h, $url) {
      H7 I) F, O6 H# t) v
  2.         $w = !$w ? 550 : $w;  P8 S. R& {' N; [% c1 F" z& ~
  3.         $h = !$h ? 400 : $h;
    4 o$ [' @+ I5 G, W" F) v) d! g
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);8 P7 x  t: n1 S
  5.         $url = $matches[0];/ x, g! T5 o0 ~: \% y4 [
  6.         $randomid = 'swf_'.random(3);, A5 F8 w% u6 h0 N: t3 G: y
  7.         if(fileext($url) != 'flv') {
    . m. N, Q! Y& G8 L5 z3 F. w4 ^' F- _
  8.                 return '<span id="'.$randomid.'"></span><script type="text/javascript" reload="1">$(\''.$randomid.'\').innerHTML=AC_FL_RunContent(\'width\', \''.$w.'\', \'height\', \''.$h.'\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', \''.$url.'\', \'quality\', \'high\', \'bgcolor\', \'#ffffff\', \'wmode\', \'transparent\', \'allowfullscreen\', \'true\');</script>';
    1 d  E$ A: V+ j1 q( n# G* l
  9.         } else {# i4 `2 i$ U# J1 {6 _
  10.                 return '<span id="'.$randomid.'"></span><script type="text/javascript" reload="1">$(\''.$randomid.'\').innerHTML=AC_FL_RunContent(\'width\', \''.$w.'\', \'height\', \''.$h.'\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \'never\', \'src\', \''.STATICURL.'image/common/flvplayer.swf\', \'flashvars\', \'file='.rawurlencode($url).'\', \'quality\', \'high\', \'wmode\', \'transparent\', \'allowfullscreen\', \'true\');</script>';
      z2 b9 H7 U) }; U  J( n
  11.         }
    , U1 y* g. _. {7 L3 s! a0 [. b
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {* A3 U5 [/ j3 V) h; J: X, B0 K; v
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';
    5 n7 [  S% p% R5 d9 ^7 t
  3. }
复制代码
这个世界只有10种人:一种是懂2进制的,另一种是不懂的。

【情系根子】〓 https://525247.net 〓

个人业余电台:BI7ILX   守候频率:1343212JJ08

管理员

论坛测试[砖]家

Rank: 12Rank: 12Rank: 12Rank: 12

金币
7319
贡献
615
威望
9151
最后登录
2026-10-4
帖子
1876
积分
25897
UID
10

论坛元老 网络高手 新人进步奖

4楼
发表于 2026-5-18 10:25:41 |只看该作者

修复多媒体控件:把原来多媒体的FLASH控件替换为HTML5原生多媒体控件

原多媒体控件:
  1. function parseaudio($url, $width = 400) {5 X. e+ W- G5 e6 [5 h
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    ) X+ Q6 q$ _6 O  g/ f; V
  3.         switch($ext) {
    4 F7 G  r2 r& ~( D1 O* r" Z, G3 b4 E
  4.                 case 'mp3':
    # w# ]$ X; {$ s: O; ]. D5 x: c8 |
  5.                 case 'wma':
    1 M! o* i/ }3 O0 ?
  6.                 case 'mid':
    3 u; j2 F7 Z5 d* n, z
  7.                 case 'wav':. k0 z' R  {) `8 T; _3 J: B
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    : M1 r7 c! N! l/ p2 s) n4 |
  9.                 case 'ra':9 f8 F5 O6 `* U3 j
  10.                 case 'rm':
    4 i: [0 ]+ n, }! {% h1 n- J2 S3 Z' E6 y
  11.                 case 'ram':
    + c6 H) T* {1 i9 S
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';" |& n3 n# o3 H( f* S  S, u
  13.         }) o$ T$ @) B- q+ `- W
  14. }6 s1 [7 U4 W- U, }8 Z1 C
  15. 9 l+ o+ i7 G" I* M
  16. function parsemedia($params, $url) {+ Q: A7 V4 Z, j' @! T0 \* E
  17.         ...
    * H8 Z4 a# q# K0 a# r% |9 j; ?1 M
  18.         return parseaudio($url, $width);
      ^+ |- Y+ O! _  K8 d8 W
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    3 Z% G! V# ^8 P: P
  2. function parseaudio($url, $width = 400) {
    " p" P9 z4 P, b/ T2 n# G5 G7 H# L
  3.         $url = str_replace('\\"', '"', $url);* F/ ]6 B9 Z$ y+ @+ t* l! V
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    / p8 F" o$ N, i+ @( v
  5. ' h/ Q8 P# V8 t; n' |
  6.         switch($ext) {
      D! o. p2 d; n9 `+ e3 u
  7.                 case 'mp3':
    $ {/ o  ]5 M; A' m
  8.                 case 'wma':
      t$ [/ o+ X) }# C1 }
  9.                 case 'wav':, i6 D& w( d/ k  t+ E
  10.                 case 'mid':
    ' v! r( b) x; \( _6 [6 h8 M
  11.                 case 'ogg':9 v; [& j4 |6 R; ~
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';& C3 U! q+ t# c. j
  13.                 case 'ra':
    / |6 ?; E9 n* U; |
  14.                 case 'rm':
    3 U7 d5 V6 {( ~% a! _/ |* G
  15.                 case 'ram':% s5 p  X9 F- o) p& y
  16.                         // RM 无法 HTML5 播放,退化为链接
    9 H$ P8 {# ^+ [9 B
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';  K, _6 _5 {+ r; e+ L2 m
  18.         }
      s' ]) S: t5 w; }2 D
  19. }* ?& a9 [/ f" I

  20. 5 @, _0 ?$ o; t( m8 y% c
  21. function parsemedia($params, $url) {
    " I( I# Q- X) R6 B6 ~8 X3 j) S
  22. $ p% U7 c2 \' J+ p. K& [8 a
  23.         $params = explode(',', $params);# u9 Y7 A7 W0 f' U: L

  24. 2 P% o. b- H  z1 P
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;8 h9 Z) V. M1 p  K
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;( X& d6 G* s5 _
  27. : D$ f9 I6 m  m: \3 f
  28.         $width  = min($width, 800);
    * P4 ]* N4 y; t+ H; e: A3 Q# N5 x
  29.         $height = min($height, 600);
    3 m. H) z+ Y/ E) u
  30. 3 H0 |6 o& P% a2 x8 B6 Y! @
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    . _* v# v+ K+ W6 c7 m3 P( ~1 D
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));2 _3 G! H! N4 G8 @0 @4 g

  33. " t7 N4 @# Z' X( j: s
  34.         /* HTML5 优先(现代浏览器) */
    $ i- |, M- |9 W7 I+ i5 G* ]( i9 N
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    ' e; m! T# A) i2 Z2 j
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">5 F) N: T, p* O9 c
  37.                                         <source src="'.$url.'" type="audio/mpeg">! ^- l. B' l8 H4 i
  38.                                 </audio>';
      v! f3 x& ^! I0 d% R
  39.         }: [1 G. d% A0 P5 p5 F" e
  40. 8 P" [$ V: R# G4 s4 i* m& Y- w
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {' E& e; L# B8 E8 @5 j0 z& C
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"
    " g4 a* }$ A# U1 ]+ U1 o1 U3 S
  43.                                          poster="">
    , v3 `+ |' g, [  p5 t" H: w# y: T
  44.                                         <source src="'.$url.'" type="video/mp4">
    * B; t, Q) U3 `) L% W
  45.                                 </video>';. z+ E3 r% i( T
  46.         }3 C2 e8 }8 H8 I. z; Z* n

  47. . |/ \8 `% b8 b3 f$ N7 S
  48.         /* Flash 逻辑保留(但不指望能用) */
    9 w% o1 L! \8 B* t+ ]
  49.         if(in_array(count($params), array(3, 4))) {
    9 x; D$ v9 V& J& a7 a# H
  50.                 $type = $params[0];6 K, m/ G% W+ X8 I* @# \
  51. 7 ]5 `; [/ p! Z! E
  52.                 switch($type) {
    " E: v( [" B7 e. h6 j& {
  53.                         case 'mp3':
    ' O: Z0 o9 d3 e- Z1 I/ ~
  54.                         case 'wma':
    ; O; n  [6 J5 A. R6 ?& Q3 `2 Z
  55.                         case 'ra':
    . z. e# Z/ \0 ~
  56.                         case 'ram':: U" r" G  T( P6 ^- @0 X
  57.                         case 'wav':9 s2 U( u9 M. J& i2 N
  58.                         case 'mid':+ ^1 q9 y1 q6 X& a7 Y$ @
  59.                                 return parseaudio($url, $width);( ^# v. L1 k3 @$ k2 D% b5 o/ b0 Q
  60. 3 P6 A+ ~' J' r9 ]/ m
  61.                         case 'rm':
    8 O6 f8 E% @- K2 c
  62.                         case 'rmvb':
    3 x9 q) ?( r. {$ \
  63.                         case 'rtsp':$ j! W& d) ~% I
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';! `" I& i6 J' g3 A; n  M! T, W

  65. ' t9 a8 \/ F* s
  66.                         case 'flv':4 S/ m$ V9 J  g1 O. E# _& d
  67.                         case 'swf':
    . s" V5 Z6 T5 I' F" a$ H3 [
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    9 \. y* b" @* y7 V7 v9 L

  69. % P3 O% t/ |* Z$ Z8 b
  70.                         case 'asf':" R9 l, ?7 J/ N$ U8 S5 G! o
  71.                         case 'asx':; \5 U5 q! h* O( h, U
  72.                         case 'wmv':: R7 r3 F' O8 f& Q7 \' ^( c# U1 ]" P
  73.                         case 'mms':3 g$ w, u$ v: k; V7 w2 D/ w! |" a
  74.                         case 'avi':- e0 X! `3 B9 A
  75.                         case 'mpg':
    ! S) ?+ q1 N1 ~. E; G9 m
  76.                         case 'mpeg':
    * H" {7 X3 L& s7 L; q5 L
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';/ @: I" \* M2 k0 ?. h) `1 |1 O
  78. % Y4 ]" ~1 |3 p
  79.                         case 'mov':
    / [- h& c' Y4 m& u
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';7 j+ _/ X; i/ H, r1 v5 `; l& t1 A
  81. 1 S4 d& Y& Y9 i/ t4 R+ F  Y
  82.                         default:" X, ~. M7 F3 u( B! ~3 b
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';( V* l) D$ Z, y
  84.                 }& |7 p  F3 K3 X, {
  85.         }# Q' Y  o% y3 y, Z
  86.         return;
    $ K' O3 v$ [) l& ~6 z
  87. }
复制代码
这个世界只有10种人:一种是懂2进制的,另一种是不懂的。

【情系根子】〓 https://525247.net 〓

个人业余电台:BI7ILX   守候频率:1343212JJ08

管理员

BI7NOR

Rank: 12Rank: 12Rank: 12Rank: 12

金币
1788
贡献
251
威望
11796
最后登录
2026-7-15
帖子
3471
积分
28539
UID
1

终身成就 特殊贡献 论坛元老 优秀斑竹 勤奋斑主 优秀会员 论坛之星 金点子奖 宣传大使 建议之星 原创先锋 贴图先锋 解答高手 网络高手 情感大使 幽默大师 活跃之星 体育之星 音乐之星 灌水先锋

3楼
发表于 2026-5-11 16:59:46 |只看该作者

管理员

论坛测试[砖]家

Rank: 12Rank: 12Rank: 12Rank: 12

金币
7319
贡献
615
威望
9151
最后登录
2026-10-4
帖子
1876
积分
25897
UID
10

论坛元老 网络高手 新人进步奖

2楼
发表于 2026-5-10 22:58:22 |只看该作者
打包收藏放这,免得老人痴呆
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入
这个世界只有10种人:一种是懂2进制的,另一种是不懂的。

【情系根子】〓 https://525247.net 〓

个人业余电台:BI7ILX   守候频率:1343212JJ08
您需要登录后才可以回帖 登录 | 立即加入

Archiver|手机版|高州人深圳站

GMT+8, 2026-11-6 16:47 , Processed in 0.025420 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部