【高州情】高州人深圳站

 找回密码
 立即加入
查看: 751|回复: 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 U5 |/ Y3 ^3 B" J1 q- r
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,: l' V# `  a6 y
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
. C" Z  Q3 O% G' L1 p0 [
  v+ S6 }8 k' Z7 Y% n

8 g4 Z$ f  ]4 ]& }
/ P, E6 R$ _- n! I% P
2 W' p6 U  p9 z6 m
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
+ X. H1 r# n" X( j==============================9 q- }) u& Y* G
【目录结构】. L0 ^- m& _( K4 s: v+ H$ I
upload/# O1 e  Q) @# O( ]% g. o% v
├── html5avatar.php        插件后端接口(核心逻辑)* t9 J7 K" E. n0 e; e( |" x
└── template/
$ K6 u. Z$ K( l, A+ _7 ]: H        └─ default/$ ?' n( _! Z# B% P  |, f
            └─ home/# v' ^. X) t# e4 L( N6 d
                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)
. y6 [! s) P5 M7 X+ D  c# r2 ?% `# G0 S+ u- [$ n- W
【适用环境】( p2 h5 N9 \  I# R- t: \
- Discuz! X2 UTF-8' p  E& T7 q4 R7 ~, l  A! ?
- UCenter 1.68 {- I6 _: N7 U
- PHP 5.6+  q5 o& D' e6 V9 f. T$ D
- {' w% A9 D5 @# n) w4 R
【安装方法】
/ B! W" k4 p" M0 q4 T6 r1. 将 upload 目录下的文件,按路径覆盖到你网站根目录9 O* h1 Y! Y. ]# a
8 r; W7 O& q2 X% D! w4 }
2. 特别注意:
& h  n9 A$ N# A. l   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm" R7 x/ q& g2 E+ _& N4 W4 w5 _
   (如果你使用了其它模板,请自行替换文件标注部分代码。)' c3 J2 D3 q5 Z+ ~  a8 x

, b: S  _0 b( _6 Y- Z; W5 E8 V3. 确保目录权限:
9 B, H6 ?+ D5 s8 b$ m3 y: T+ X   chmod -R 755 uc_server/data/avatar
  Q4 y5 w' i# {/ F# ^( _2 N" [/ m, k# C8 V5 z
4. 进入:. [: X- u9 j+ m
   点头像进入 →个人空间 → 编辑头像4 v. J" l9 n' w6 N
   即可使用 HTML5 上传3 v8 t1 C# `; h4 R3 [

+ N$ g; F; b0 l4 w0 h1 a* j【说明】2 M8 M% ?/ G# K! G' C; I" i: n) Y
- 会直接替换 Flash 头像入口6 m4 A: `9 L1 u3 J4 R
- 无需安装、无需后台开启* \2 |/ v* T+ }/ R6 x
- 不影响 UCenter 原有逻辑
/ y8 ~0 g* o) l& X3 v  W4 H- 保留头像简单裁剪功能(Cropper.js)
6 S+ r9 n9 g# P6 o, f' b# h5 g$ z- 仅新增一个htnl5上传组件

. q2 E! L6 w6 ?' ~8 Q  Q6 [
( k" v. {: d) C& e
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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

管理员

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

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

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

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

原多媒体控件:
  1. function parseaudio($url, $width = 400) {
    4 `- M5 B$ F2 F
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    ( E( ?+ S: r4 e! k1 p  C! m, e
  3.         switch($ext) {$ X9 Z( H" R7 p0 e
  4.                 case 'mp3':$ R$ p3 R1 Z+ `. Y
  5.                 case 'wma':
    9 F& ?  A# B, X; o# W7 u
  6.                 case 'mid':
    ) q; U  c% n4 Y) p+ Y: B# u
  7.                 case 'wav':
    ( w: b! d8 d' c7 |! ?
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';- E, f( a' \: c+ q9 |9 D0 B
  9.                 case 'ra':$ m3 M& f- B7 N& G
  10.                 case 'rm':
    8 r1 C' k$ U1 g+ R, O: K" C
  11.                 case 'ram':
    ! u: p3 e' o' c% ~1 ]
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    $ S$ r0 Y  V8 T# D2 m* t
  13.         }
    $ k' \2 K4 L8 n; K  S  S3 q3 I
  14. }
    0 O% _9 _5 v- D  E) Y

  15. , J+ x- K' z- {5 g+ y
  16. function parsemedia($params, $url) {
    ! B! ~5 N' I( v5 t3 N! ~( \# c
  17.         ...( Q- c3 J" ?" ]- ]
  18.         return parseaudio($url, $width);2 G4 M# M! x: a& Q5 V4 w
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    6 k2 |; i. n  Y7 o6 j
  2. function parseaudio($url, $width = 400) {! f7 e: D! L0 P, E
  3.         $url = str_replace('\\"', '"', $url);
    8 B4 s; C. O) L; |0 b% @/ r
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));* n2 b# N; y& N: K
  5. ; N! |, M  T- v0 m% P% h
  6.         switch($ext) {8 g# A* C6 t0 `( R  d1 l/ E# w
  7.                 case 'mp3':
    . k  ~- h: D) m5 [9 `9 y8 {5 k$ g
  8.                 case 'wma':
    3 L( p7 z6 I( E% Q* H, t2 H
  9.                 case 'wav':1 H8 ]! G* F1 D
  10.                 case 'mid':' H% G% j2 F& E1 ~! I: Z
  11.                 case 'ogg':4 u+ t, G- `1 {7 a; c
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    6 X. t2 Z+ o; n5 E0 c5 P. b
  13.                 case 'ra':5 G# f7 [6 g. o3 [
  14.                 case 'rm':
    $ Y5 e- P% [+ f$ u" s1 l1 K  a; M
  15.                 case 'ram':1 Y& H( O8 P& o% x- L" z& E
  16.                         // RM 无法 HTML5 播放,退化为链接0 O" I) Z7 R+ U% c5 t9 R# O/ `# j
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    & v* M' F! K0 n5 ~0 w
  18.         }) S  i$ M( S* H# r: n7 }
  19. }8 f! @" Z& ?) O

  20. 0 R" T0 Q- O( \9 y8 F
  21. function parsemedia($params, $url) {
    - N, {9 z) d* Z" {1 L

  22. : z& q( h5 X4 D8 o* @  Z) q# D3 Y
  23.         $params = explode(',', $params);
    3 `7 I, S- P3 t" y- c, ~, G: u" r
  24. ( P( P! o6 f2 I, c0 \
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;6 z5 B" h8 q7 T3 k9 w
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;  {; E! `& \/ L) v: g, l

  27. ! @4 D9 z* c  p  _' S" S
  28.         $width  = min($width, 800);
    ! M, ^; j1 ?# g9 W) y2 f/ x
  29.         $height = min($height, 600);
    5 J  S; i5 w9 g
  30. 7 S) ~- x0 N$ o. o* W$ V5 D, m
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    1 {/ V9 D6 s  @  t6 u
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    $ C+ }" g* }2 k3 K

  33. & n+ m# A1 x0 P7 K$ p6 l. `
  34.         /* HTML5 优先(现代浏览器) *// R9 d9 E- h9 W3 J: v
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {! {" f8 {' x5 T) O- v
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">- }5 F' M" c) f; v4 Z/ L
  37.                                         <source src="'.$url.'" type="audio/mpeg"># c* }3 g; y5 Y! D
  38.                                 </audio>';4 Y& C# H+ u$ h. c: F
  39.         }
    + ], M) P$ [: Q% ^0 Y. O

  40. $ C, w& E2 o4 U' e
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {; h2 ]. v# Z) F9 G3 U3 r7 l  `1 c3 R
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;". U6 \- I: c7 k9 o- w
  43.                                          poster="">
    9 x& f! s0 b- G& b2 X; K9 i
  44.                                         <source src="'.$url.'" type="video/mp4"># A: Q9 o' F5 M  x- r( B
  45.                                 </video>';
    & J$ Z* e- W: y+ U3 Q5 v
  46.         }
    + Z, n$ L2 {) _, T- G

  47. , z  Z! x$ h4 j
  48.         /* Flash 逻辑保留(但不指望能用) */
      E, o+ z& G% R$ ~: o6 @, s
  49.         if(in_array(count($params), array(3, 4))) {
    * E5 m9 k) O( K6 W4 o
  50.                 $type = $params[0];) A( B) m0 B  a, Y( a8 n) `4 y; i

  51. ) ]) U7 ~& U- b( o5 j7 ~
  52.                 switch($type) {% e' D$ [4 |# Z% ~1 U  t
  53.                         case 'mp3':1 c: c: z+ }5 A) ]4 ^- }
  54.                         case 'wma':
    ; F2 h3 D  O' w# r% Z
  55.                         case 'ra':$ v2 m3 E6 R1 E9 }: ~5 E
  56.                         case 'ram':' O7 e; r- [" l/ z
  57.                         case 'wav':+ v& D! T5 X6 ~- p: w: _  Z) ~1 K
  58.                         case 'mid':) |' e4 r" y  ~4 P, m
  59.                                 return parseaudio($url, $width);; u& g& O! a1 T+ w/ @: ?

  60. $ A; c2 d& c6 w/ J6 S
  61.                         case 'rm':
    $ |5 e" @' W8 W# o1 R/ P
  62.                         case 'rmvb':3 h3 i: T$ r! g3 ^3 U
  63.                         case 'rtsp':
    : k$ o, T1 w- }+ A+ Y- S
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';- b2 E$ Z2 _5 j5 E/ W* {
  65.   i, p8 f( P' |3 R0 X/ z" t
  66.                         case 'flv':* F! {2 @( }2 i, P2 e' i0 K
  67.                         case 'swf':4 t6 Y8 R0 L0 p" j
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    " r9 W* {0 m5 f1 }- Q" c8 |' {+ H
  69. ! X7 Y0 J5 {. G) a' K3 m9 X
  70.                         case 'asf':) Y4 j( p4 o( B1 b2 U# z
  71.                         case 'asx':
    2 |5 ~6 u0 m: R% w* K
  72.                         case 'wmv':
    8 a: N; \5 p' \3 A+ u4 `
  73.                         case 'mms':
    & m$ p' U- T$ r' i: Q* m" }0 h
  74.                         case 'avi':( b$ D- m- w6 D+ G! |% Y9 s
  75.                         case 'mpg':2 P; e5 |7 [# a. n7 _* F& ~
  76.                         case 'mpeg':* s0 w% d# i0 G5 g) A, p  I
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    + ~& I* J9 x* h7 h* e! V- U

  78. ( B* P1 P6 O4 P2 g
  79.                         case 'mov':4 d% ~  a9 h0 k" g& s
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    0 n% G: I( p% ^0 v7 O% @! f

  81. 1 `+ A- D$ o% T
  82.                         default:
    : F( g  x8 s7 g* G! U
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    2 W& ]$ @) z) G1 n
  84.                 }4 X/ Q: L. O6 _7 l' E6 H) d8 O
  85.         }
    4 G0 U8 @- T/ R9 H% n. B
  86.         return;2 u" {. U2 j) J% d& Y: I
  87. }
复制代码
这个世界只有10种人:一种是懂2进制的,另一种是不懂的。

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

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

管理员

论坛测试[砖]家

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) {
    8 a6 F, N) y" W& \
  2.         $w = !$w ? 550 : $w;
    4 {% Y3 L: A6 \# m# W9 }9 I
  3.         $h = !$h ? 400 : $h;) u% |! R4 ?# G- o
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);# Q0 Y% p6 M3 S0 z
  5.         $url = $matches[0];
      c1 `/ q$ c! v$ Y
  6.         $randomid = 'swf_'.random(3);) k, Q; v9 A( K: d
  7.         if(fileext($url) != 'flv') {
    7 p+ \# ^, u' Z. d
  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>';0 v: r7 m  ^8 v. b. ^$ Q
  9.         } else {* f5 j1 o; @) Q! w7 X" S# _( d
  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>';" P* E- ?+ L, |+ Q, ^* g% z
  11.         }
    1 z1 m; ]; |5 I6 F' {) j
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
    ) {2 v, u4 g/ H- ]
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';
    ; K9 Q0 }) G* `7 M) W' }( u
  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-11-6 13:20 , Processed in 0.030295 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部