【高州情】高州人深圳站

 找回密码
 立即加入
查看: 578|回复: 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身上,
9 V; m5 `% Q: j/ [4 m7 s+ s" h用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,4 d; Y5 z$ s5 X
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。

9 `2 h2 Y$ t* }# s( q& a8 ]
4 s5 Q0 Q* j3 ~
/ O/ x) A! B& A
- K1 Z# I+ o9 f4 L) D8 t

$ k# m" t4 T* t( k& I! q! j
Discuz X2 HTML5 头像插件 v1.0  2026-05-05- q& F3 G; k; U; X$ u
==============================0 T1 i8 [6 w& a& E
【目录结构】
/ N- ^5 `7 `' T+ o3 J) i2 T- @upload/8 m+ [, i2 h; y9 R  `
├── html5avatar.php        插件后端接口(核心逻辑)0 J3 f- E9 ?( h8 R; E5 _  C/ f
└── template/
/ W0 `9 r2 O, F# `4 S! M  p, L" r6 D        └─ default/3 A+ [8 O9 X3 B3 B. w/ _
            └─ home/; @. _- {( N2 d
                └─ spacecp_avatar.htm        前端模板(含 Cropper.js). h6 ]- `: w  Y1 ^9 c6 _# V

, z/ Q: P7 ^7 U# q5 }【适用环境】
3 x4 m) k2 G, N8 y+ o" n- Discuz! X2 UTF-85 ~4 ?; u! Z/ t  p- t
- UCenter 1.6
9 E4 H- P$ E  O% F/ ^, z- PHP 5.6+
0 q. L4 K/ J4 ~. K& n
" g/ {; G# c* H, T  c: O& `【安装方法】
. N/ L: w$ T( t! }1. 将 upload 目录下的文件,按路径覆盖到你网站根目录
6 {' B: ]' n8 J6 K1 M$ G6 ^9 b3 G: h" C8 m0 R/ H7 A. j3 R- |( [
2. 特别注意:$ c/ `: S1 T7 O. ^$ H
   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm4 V4 `0 }6 A, X* P; \# ~
   (如果你使用了其它模板,请自行替换文件标注部分代码。)
7 G5 W- k% |" I2 N
9 T& }; _! k. t" E3. 确保目录权限:) _* N2 h% a' {! k- n, c3 Q  t
   chmod -R 755 uc_server/data/avatar5 e  u$ C6 y- [" l4 K; P

( s/ e5 D' U2 W3 `+ t6 E4. 进入:% f. e8 i/ o, Y6 {# K2 ~/ W
   点头像进入 →个人空间 → 编辑头像% N  h: Q- g; [- q- z
   即可使用 HTML5 上传
1 t! Z+ m# q6 X: v1 m* w7 k) x7 S& w1 p3 S
【说明】
1 P: Q% K/ ]3 L0 @' c- 会直接替换 Flash 头像入口4 V3 _' H; Z  J8 j
- 无需安装、无需后台开启
# q4 Y7 b! I! v* _- 不影响 UCenter 原有逻辑8 B; W+ A  V$ c1 a/ ^
- 保留头像简单裁剪功能(Cropper.js)
3 i3 q2 J( N; h; `" Q' [- 仅新增一个htnl5上传组件

1 t# U4 D0 X/ l6 f) Y+ y+ G) e% e3 {  e. i  g! Q
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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

金币
7316
贡献
615
威望
9151
最后登录
2026-8-24
帖子
1875
积分
25896
UID
10

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

2
发表于 2026-5-10 22:58:22 |只看该作者
打包收藏放这,免得老人痴呆
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入
这个世界只有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

金币
7316
贡献
615
威望
9151
最后登录
2026-8-24
帖子
1875
积分
25896
UID
10

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

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

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

原多媒体控件:
  1. function parseaudio($url, $width = 400) {
    . V' p4 M9 M+ A* L+ u0 B8 h- T
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));0 t/ J. @2 H- @+ w7 x# F
  3.         switch($ext) {
    ! X0 y! p+ A# O' L8 d" l
  4.                 case 'mp3':
    9 S$ I$ ?, y8 O8 r. E8 J3 u
  5.                 case 'wma':6 h- t  ?$ t6 Z/ s7 o
  6.                 case 'mid':
    9 B: _8 f- E. T6 ?
  7.                 case 'wav':
    # X* Z( U1 i9 N0 m  I( R* T: J$ a. q
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    0 z" A6 G, N; y4 E
  9.                 case 'ra':: E; B" o  i) \  ^" S* W
  10.                 case 'rm':& O9 g& ~! \. G# i
  11.                 case 'ram':
    3 T* \5 Y0 N0 I* o2 |3 I+ y$ g2 {
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    - F4 E8 _* _$ J7 H/ I
  13.         }
    1 k5 o. \" x" b# ~' b
  14. }- W( H3 O# N) h  i5 u) O/ A
  15. ( X! f4 U$ _; V5 {. Q" S9 |! L
  16. function parsemedia($params, $url) {/ T. ^7 j- G+ z/ m3 p* A
  17.         ...6 Q! T( @: O/ k0 l2 E
  18.         return parseaudio($url, $width);4 `, w3 p  p: `! O+ R4 U  e0 a
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件/ v4 @+ Z8 V' a
  2. function parseaudio($url, $width = 400) {
    * d% u' H2 G9 D. l) z
  3.         $url = str_replace('\\"', '"', $url);
    / @" c% K4 C( V# f0 }
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));  }, k+ ?' O! ~  O0 D
  5. 4 B9 c+ r1 G( B) i1 [- [2 V
  6.         switch($ext) {
    3 C/ w# H; Y1 e# ~1 ?/ b( w/ o& q
  7.                 case 'mp3':
    & Z4 ?! Q3 {8 m  h2 B* D- e
  8.                 case 'wma':+ A5 Y4 _5 R$ _9 M  `; R7 L
  9.                 case 'wav':
    ( C4 D( X1 C6 Z( B+ Y
  10.                 case 'mid':
    , a7 {1 q5 k& ^# l8 q7 y) ?# Q
  11.                 case 'ogg':
    + q7 ?! F; Z9 W" n$ M' S7 @# z  \
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    6 W% `' v1 t1 C* t  W: g
  13.                 case 'ra':( C, c. o! |/ X, n+ x$ w% s
  14.                 case 'rm':- n2 r- E. t  c/ U, }( c$ i: |! t
  15.                 case 'ram':
    # \' ?7 B, `3 b0 }& V' `5 G
  16.                         // RM 无法 HTML5 播放,退化为链接
    9 R& W# D% F1 F2 W
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    5 w2 G+ [; u  H+ p8 n1 e3 T: O" Y
  18.         }
    6 n! _, U( O  g4 O: @
  19. }! h4 q1 C3 n/ C( z. J
  20.   X! _: H! {/ a! a  x: p
  21. function parsemedia($params, $url) {
    ' C5 i  V+ H# ^1 B' Y
  22. 8 ^/ Q7 `5 T0 h" C* Y
  23.         $params = explode(',', $params);. K( z' Y" @& E& ]% r
  24. " ?' L& M# h: z+ q/ I* S. U+ c
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;) F; F% P( V6 p1 t4 F- K
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;
    , V8 c: n4 G9 |5 W2 D7 w

  27. - T9 b7 W9 e( r: h& I
  28.         $width  = min($width, 800);, a, M) u2 h) C
  29.         $height = min($height, 600);( u3 ?, [+ v9 u

  30. / n& `' d7 H" i" V! Q# Q
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));% g/ B  v5 L. K9 k6 [! G6 ]
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));$ Y0 L3 Q. _, J# o# d, B6 ^

  33. 1 [, o+ K8 _; ]0 @% H
  34.         /* HTML5 优先(现代浏览器) */7 o3 n' @- h' W6 k. f
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {& W& J: g- A6 U& o  M) E+ p
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">
    8 u+ J  s% c0 r* {& X
  37.                                         <source src="'.$url.'" type="audio/mpeg">, a- p) i$ U3 J  Q8 f" B2 f
  38.                                 </audio>';( p; g+ Z) z( w; |! |+ L  o+ u% B
  39.         }+ e* q& A( d& O
  40. . d# h7 Y* A3 m! a4 K0 p$ V1 r
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
    8 Q# u- c% O; Q7 r5 R/ k. `
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"0 e4 I* Z' \) Y& c/ b, i
  43.                                          poster="">- U& d/ @/ }( d2 b
  44.                                         <source src="'.$url.'" type="video/mp4">  Q, X% @+ ^, L- Q* R0 s
  45.                                 </video>';* k# V. p) M. s* S& M
  46.         }- U: j+ Z2 h+ U' l( H

  47. 3 u" o, `2 T& C/ X5 t4 i
  48.         /* Flash 逻辑保留(但不指望能用) */
    " N5 F! n- m# T
  49.         if(in_array(count($params), array(3, 4))) {
    5 f1 t1 i2 _- e0 _3 D. ?$ l
  50.                 $type = $params[0];  c6 ^( O" i' E9 t/ s* U: I5 p3 v6 m
  51. # z8 B8 {$ h  E4 B( W# v2 v
  52.                 switch($type) {
    : ?" h4 v- l: S( d3 g3 _
  53.                         case 'mp3':4 s" u2 C' g, w( H4 s- @* K
  54.                         case 'wma':$ H! C0 R" V: Q, V) X
  55.                         case 'ra':
    # ]9 {3 G6 b1 T& I: ?
  56.                         case 'ram':+ L) J, w( p: L$ T
  57.                         case 'wav':* |& k, o# a! Q' Y- V
  58.                         case 'mid':' I" A2 o+ \; X# g
  59.                                 return parseaudio($url, $width);
    5 g5 S4 M  E6 H8 K
  60. $ N1 d$ ^9 x) }4 }
  61.                         case 'rm':
    ' H  E5 m: o; b. J
  62.                         case 'rmvb':
    8 z* W% G1 I7 Y& X% {( L
  63.                         case 'rtsp':
    $ B. q# N5 b/ z8 q- p0 T
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    + h. I7 D9 f2 a7 m1 ^

  65. & R  x4 M, V( q* L# ^$ ?: \
  66.                         case 'flv':7 y4 \: p" M( s0 u
  67.                         case 'swf':& r9 X1 X  d( n( C/ W
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';# |. \- x' c& L3 O/ y1 D) E

  69. 8 t8 d% C4 u5 \3 f1 Z
  70.                         case 'asf':
    ( A, C2 V0 q$ k% j- P
  71.                         case 'asx':
    % y8 ?+ ?3 b- S) N6 D$ I+ G
  72.                         case 'wmv':
    . [& d0 m0 K- ~
  73.                         case 'mms':
    7 `0 i& }2 k( f4 S, g  `0 U4 Y$ i
  74.                         case 'avi':8 @; ?! k: H" w2 E* y: k
  75.                         case 'mpg':
    ; X' U( Y/ u! u+ I6 q% c/ K
  76.                         case 'mpeg':. d" R( e/ q. A) _6 ]
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ( s! M1 g, y6 P- U7 i& b+ _
  78. ) G( ?& |7 T, q  |0 W
  79.                         case 'mov':
    / p5 |/ i; a3 \7 i" I" p
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    6 x3 R" x( Y$ }# A$ g$ ^+ {
  81. " n% Y, S, [% E/ ~7 Q- i& d
  82.                         default:  l% c3 D, F  I6 A% C
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    : {. V4 `) L- c
  84.                 }
    & Q% }& w1 r& j5 K- j' {) m# Q5 N
  85.         }
    $ j% P! ~9 S# a- \
  86.         return;0 p) a7 x; e3 B8 _
  87. }
复制代码
这个世界只有10种人:一种是懂2进制的,另一种是不懂的。

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

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

管理员

论坛测试[砖]家

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

金币
7316
贡献
615
威望
9151
最后登录
2026-8-24
帖子
1875
积分
25896
UID
10

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

5
发表于 2026-5-18 11:03:28 |只看该作者
原FLASH已死:
  1. function parseflash($w, $h, $url) {
    ' e" @3 C  n( W
  2.         $w = !$w ? 550 : $w;  w* `* o6 [, L" e7 T3 a+ @' m
  3.         $h = !$h ? 400 : $h;& A6 D' s6 i* j
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);1 G# ~. U* R- s  r5 ?) ^1 D# z" X
  5.         $url = $matches[0];
    # _" o7 m" ?1 k2 K: S# ]
  6.         $randomid = 'swf_'.random(3);
    & j/ L% V7 M, \* G5 U$ j
  7.         if(fileext($url) != 'flv') {. y0 J' O9 S5 t0 M
  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>';
    ) k4 K4 s5 R# H1 {5 C  s0 z6 i
  9.         } else {$ K7 V& F9 l+ w
  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>';5 t) |$ n. D# V, i
  11.         }9 I  K8 i" f# X: n( r% f) o
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
    ( B2 w. R8 i( p) X/ Q! a
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';
    0 p( k3 ?9 H+ R( [" H5 X  z
  3. }
复制代码
这个世界只有10种人:一种是懂2进制的,另一种是不懂的。

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

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

Rank: 1

金币
53
贡献
0
威望
2
最后登录
2026-6-9
帖子
1
积分
5
UID
3000
6
发表于 2026-6-9 20:41:31 |只看该作者
您需要登录后才可以回帖 登录 | 立即加入

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

GMT+8, 2026-9-22 01:07 , Processed in 0.032724 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部