【高州情】高州人深圳站

 找回密码
 立即加入
查看: 381|回复: 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身上,
: n) Q- X- D& `& U& [% W( n/ ^用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,, H  q8 U0 c$ I+ ?
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。

: f6 T# L3 Q6 ]9 o+ b  b' L! ]
  V1 |( H. A( b( o4 v8 u6 G; y. E
1 v  ], a& ]( D6 P* g  n
3 N- u+ A- P4 {5 D/ t7 F: J! ~

3 w) i7 U2 D/ |6 Q
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
& K. B" _! W* T- v5 k$ t==============================, `6 V4 r& U& T9 p4 `8 r7 b
【目录结构】7 Q$ P* U" Z) J: m, w
upload/) S/ Q3 X7 l( W# d
├── html5avatar.php        插件后端接口(核心逻辑)/ x2 W- w. ^5 f- z/ r
└── template/
! e! X( A8 I+ t- q; O* K# k+ c        └─ default/
3 z+ J) y% t# D            └─ home/$ Q) T- W/ H7 E7 f# z0 G
                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)
+ c# Y4 X: a& E$ O
2 e1 D0 F$ }6 b- I【适用环境】
% ?9 y5 U1 D7 _$ `* G3 k( i- Discuz! X2 UTF-89 U) O; e0 H& M
- UCenter 1.64 S$ Z& G6 C5 q4 X8 q0 @& ^
- PHP 5.6+
1 c" p8 A# F) {+ l$ E) O# }# y! n+ }
【安装方法】+ P; S2 z( x& `" L9 m
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录
. u* O  D' t, f5 D
) E$ A, @2 V0 v* _& A2 D2. 特别注意:
- y, t% o; O# w" `0 Q- z   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm; ?5 l; Q1 |- ]& P
   (如果你使用了其它模板,请自行替换文件标注部分代码。)
5 w3 k- R) {3 q, \
# j8 ^4 b, U, |. j3. 确保目录权限:* D: {( s( Y; U2 e. e- d9 D/ e
   chmod -R 755 uc_server/data/avatar, F; n1 D& O7 t) a0 C4 `4 }
5 K0 [+ V  q* t$ U; b
4. 进入:
/ N" b6 j+ K8 G( [+ s" E  U8 f   点头像进入 →个人空间 → 编辑头像
" G5 h* b8 \" z   即可使用 HTML5 上传
' ^6 k+ g6 g0 b" ^4 p4 Y' c8 F
: ?' @+ c3 ~$ z: C7 b【说明】
, b$ o+ v% W  c+ W7 i. b0 o- R& t- C- 会直接替换 Flash 头像入口3 q1 T2 o5 x% S8 b9 q; u/ A5 S
- 无需安装、无需后台开启
9 H; @3 [3 k2 X. Q  U- 不影响 UCenter 原有逻辑
9 G& i0 k% ?' g4 a- 保留头像简单裁剪功能(Cropper.js)
. C8 W1 J1 u" p- D6 P: Z- 仅新增一个htnl5上传组件

8 {7 m" y$ M. F6 ?$ P2 t, c0 t0 D4 g+ v3 `! E
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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

金币
7308
贡献
615
威望
9151
最后登录
2026-7-16
帖子
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

金币
7308
贡献
615
威望
9151
最后登录
2026-7-16
帖子
1875
积分
25896
UID
10

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

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

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

原多媒体控件:
  1. function parseaudio($url, $width = 400) {
    0 x9 j3 H; L2 O. o3 o- F7 Q$ w
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));) f2 Q" M6 w9 y! B$ T
  3.         switch($ext) {! d; Y# U% O/ Z4 `
  4.                 case 'mp3':. B9 L- M! q! o3 B4 v' ~
  5.                 case 'wma':& S" K9 Z" D# W' d# c* a3 ~
  6.                 case 'mid':7 D! l' H! {; W, \  n7 M4 e
  7.                 case 'wav':$ n- s# O$ h/ x
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    & z  d* O! z7 u0 v9 d) V3 U( w
  9.                 case 'ra':4 G5 ]9 Y# b% I6 N  C+ B( d
  10.                 case 'rm':
    + ~7 Q$ c! J6 F% Y* z
  11.                 case 'ram':% y9 f+ s. D! u8 @/ l/ d$ U
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';! X8 s6 I# ~6 n4 O
  13.         }
    $ U: w4 @) |6 ^* g+ \, i( h, m
  14. }
    ( h$ i: ^0 F( X0 T5 D* k8 c% B' ^

  15. , a; J& B& h4 A9 g6 \1 a+ }! O
  16. function parsemedia($params, $url) {
    # [! D# q4 Y( @* ^
  17.         ...
    : C) I- [& |; }5 i; `- v9 b" H
  18.         return parseaudio($url, $width);
    ) x5 n3 C  t- O1 Z% ]" e
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件" ~: h. a& X* b4 _
  2. function parseaudio($url, $width = 400) {
    , j1 A, c! a. T- E4 l, ^- f
  3.         $url = str_replace('\\"', '"', $url);
    8 M8 |) q5 [- ]4 C
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));+ r# ?( |4 q, ]+ |0 Y

  5. 7 p5 s; \0 ~* q6 y" T9 d  j
  6.         switch($ext) {2 t2 w  M1 t2 C$ g; k8 k$ R. z
  7.                 case 'mp3':( |, t* }+ r; p% E4 r/ A" c1 s1 K0 A8 }
  8.                 case 'wma':7 Z4 \! s: o$ J2 a; y) x
  9.                 case 'wav':
    5 K% M6 y5 a% m. O3 o9 A
  10.                 case 'mid':2 @5 v6 t: g9 |) e/ d0 C
  11.                 case 'ogg':( a8 j: j  K# n% H. R# U
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';2 J$ |: t# U/ L! J& h" A
  13.                 case 'ra':. z" K& }5 g! i5 N6 c$ `! X
  14.                 case 'rm':
    " M  N# z; V( u9 f' r  Y/ H
  15.                 case 'ram':
    + b, z, R: l0 _! y7 d# J
  16.                         // RM 无法 HTML5 播放,退化为链接" y  P% B% A7 J4 |9 t- l
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    4 n7 @0 R) N0 O$ e0 K
  18.         }
    2 L9 e. ^% t$ w, f+ a6 a* N9 u
  19. }& l) S) Y! N: F2 I% K3 U
  20. ! t) C7 `" N6 N1 u8 v( Z; ?
  21. function parsemedia($params, $url) {( k- m; o! c  h( `/ j; ~: p

  22. - B/ l  i% [6 J7 v! F4 `3 {
  23.         $params = explode(',', $params);
    3 w/ }- R/ P$ N& Z

  24. & Y0 Y  D2 m: ^( n. F: E/ b) Z& }
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;% h5 z3 p# Y6 u# _/ J/ ?
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;. _* j& \2 g+ R- ^+ f2 W% S
  27. $ a8 X) C8 o8 E2 m2 M( x! i
  28.         $width  = min($width, 800);7 Z& d) G/ e/ F/ G1 K2 n0 p! z
  29.         $height = min($height, 600);2 S* ~- z) S0 X9 i4 K% h+ s
  30. - q7 y5 c! D- X1 H" J+ J
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));$ f2 [& u% S5 y0 p2 x- P0 x, t
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));/ I3 U3 v0 c1 h' U, s; d& p" A
  33. 1 W6 e0 t$ i9 R
  34.         /* HTML5 优先(现代浏览器) */$ ?% @, e. }* {+ X( P, K# x, r
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {' s6 Q3 |- Y* w7 C1 m
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">8 U+ N. {1 ^* _7 b0 [5 b* z
  37.                                         <source src="'.$url.'" type="audio/mpeg">
    ) s: t$ J3 ~4 U- B
  38.                                 </audio>';9 \; C0 X% m; D( h7 E3 U3 a$ X
  39.         }( Z5 [6 h9 q  g- Q: z* @/ i7 G

  40. $ d/ ]( o( I- U8 l8 l+ j
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
    ! o/ i4 f9 j6 N* I- y/ n
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"
    # u" C/ @+ y3 I7 F- e) p
  43.                                          poster="">( x/ ?8 K3 R/ u! R0 [! Q
  44.                                         <source src="'.$url.'" type="video/mp4">9 `* Z! q+ z* m# W$ X  p; J
  45.                                 </video>';
    & v; I. }( J- q/ X. c+ c. h6 d5 L
  46.         }; A2 s' ]. i3 A
  47. 6 w& J) _  ]! X1 N4 Y$ v$ d
  48.         /* Flash 逻辑保留(但不指望能用) */$ u. c9 W" Y+ x7 J
  49.         if(in_array(count($params), array(3, 4))) {5 y  `9 J& y, P2 Z* L8 c2 N% T7 }, W- A
  50.                 $type = $params[0];
    , ^4 r4 v$ e+ s
  51. : @) Z# W4 N2 ~* k9 `+ _9 N
  52.                 switch($type) {
    5 L0 w1 \" ?5 W3 }* E
  53.                         case 'mp3':. j# m5 _3 ^% F' g% F5 ?; ?6 l! |
  54.                         case 'wma':
    $ F0 k8 o  c! J1 g: d
  55.                         case 'ra':
    . t7 U7 F5 @. o
  56.                         case 'ram':
    - |1 B$ s# N, k" [8 q" `
  57.                         case 'wav':
    0 u9 j5 S& K- n0 B- s
  58.                         case 'mid':) ~8 k- _/ m, ^. i* R
  59.                                 return parseaudio($url, $width);
    ; d  Z0 |! R# {% x7 {8 v( z" F

  60. ) O7 b* z& e8 C- d( Y
  61.                         case 'rm':4 P$ w" D% `/ S1 [; ?5 R5 ~) S
  62.                         case 'rmvb':
    8 y  L- V7 R6 x: ]- G) N) U
  63.                         case 'rtsp':
    9 D/ U- W" J- V; Y7 }* N
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ! t* t* d% K5 J5 w

  65. 1 M8 Z8 Y& H) J0 k. o# `; p. U; \. @
  66.                         case 'flv':4 _/ D) @! v$ ~  v/ P
  67.                         case 'swf':
    6 k7 N$ U* N$ M% @
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';( u9 q- ]- ~7 r4 u5 f  m4 J9 M' [9 L
  69. & Y* \. A3 a: f! B
  70.                         case 'asf':
    * N, U. u$ l" E
  71.                         case 'asx':2 _# f2 p* U; F, R, c
  72.                         case 'wmv':
    * h' B0 k4 i6 I
  73.                         case 'mms':
    * s, \& Z- \! b; ~
  74.                         case 'avi':
    5 t. K" j  R; H# v
  75.                         case 'mpg':
    # y, Q7 {5 v5 u# p8 k: d7 o) D
  76.                         case 'mpeg':
    6 j" j, y( n4 l! M1 R7 L& M
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';) k- n9 N2 d, R) w3 V/ n4 E

  78. 0 @0 R6 B0 j8 P; g4 X! Y+ Q
  79.                         case 'mov':4 s0 u3 p. h8 ^4 r/ Z, d0 P" N
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    # k) c; a$ s/ Q
  81. ; l' Y) q7 m/ ]2 {# c1 J, S) Y, L
  82.                         default:
    ( e' \0 k" O% q! G* Z" D4 \3 l
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';5 c- B1 d+ l. r8 b; `  w
  84.                 }
    ' y3 C9 w! R* C- Y! B9 @
  85.         }
    % o5 \) G3 p$ u7 X
  86.         return;# g7 e) t' D( C: q7 a
  87. }
复制代码
这个世界只有10种人:一种是懂2进制的,另一种是不懂的。

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

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

管理员

论坛测试[砖]家

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

金币
7308
贡献
615
威望
9151
最后登录
2026-7-16
帖子
1875
积分
25896
UID
10

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

5
发表于 2026-5-18 11:03:28 |只看该作者
原FLASH已死:
  1. function parseflash($w, $h, $url) {& n1 e7 _/ w1 M& ^) ^! R
  2.         $w = !$w ? 550 : $w;
    0 A& E& L4 o7 [; N
  3.         $h = !$h ? 400 : $h;7 l1 D4 B% S  n/ k+ S, L' J0 W
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);0 e3 d7 R1 Y( q* P0 u+ q
  5.         $url = $matches[0];7 u2 [! K# ?5 C2 P" K
  6.         $randomid = 'swf_'.random(3);$ e/ c, ?2 D& \+ P
  7.         if(fileext($url) != 'flv') {
    . h' G1 j6 W9 f/ O/ z% A$ b- r
  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>';
    - F7 m  Z/ D" w8 R$ u9 B
  9.         } else {
    ; A; Z: u: U* R; S; b5 ~9 x& n
  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>';6 D/ b2 w2 ~, K9 n" p' i
  11.         }$ w! f3 e  a4 ~8 l
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
    4 U1 C! q* w9 |) N6 i. K
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';% e2 @7 p. u( L9 {4 U" y. P, z. 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-7-28 16:36 , Processed in 0.032685 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部