【高州情】高州人深圳站

 找回密码
 立即加入
查看: 571|回复: 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身上,
+ S5 s/ [0 x" L" V用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,
  T4 D* Z6 J) t& Z* N5 Z* K虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
1 o: D: ]" U5 E5 ?  ?
3 O6 l' e$ |. [  ?8 n8 v0 o
& `8 @3 {% x* ]5 L! D

( |) C# {$ t: n. I, Y4 x$ l' i0 |; v% T/ ~2 Y( M# x( h7 y
Discuz X2 HTML5 头像插件 v1.0  2026-05-054 E3 m" l; I: p0 m
==============================" q9 J) W' d, h" m
【目录结构】
7 l( d# p6 b4 v3 ]upload/
" b# ^  ^7 N- n0 Z2 i3 u/ W. }├── html5avatar.php        插件后端接口(核心逻辑)
! l* B3 N8 o! p1 D- ^# ?5 d└── template/
/ s! B2 L! D. s- [' ^# t  p1 S# a        └─ default/
' B; u8 l3 _" w8 C, u/ r3 ~) i  \            └─ home// ?/ B9 U" `+ {7 v* y. L
                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)( k( v$ e/ z/ e6 }! n1 O  j

4 e; P+ i, |1 Y- j* g' K1 \【适用环境】
8 ]* d, W9 f3 b; P2 \1 l- Discuz! X2 UTF-8' d8 D" s; d& _! A, V
- UCenter 1.6# x" A& c- y9 P) N+ c
- PHP 5.6+
- n- g' I0 P+ k0 G5 B) @5 d
  f: x( s$ Z6 J; P# ?【安装方法】
" e# `. g+ I1 k9 d1. 将 upload 目录下的文件,按路径覆盖到你网站根目录
2 t/ r# k  Y3 h" n1 Z8 Y, G6 I: f% \2 Z) o" m( c! R
2. 特别注意:
( }5 d5 @' X& f. \9 @   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm' S* w0 p8 u' ?6 |8 @: @6 J
   (如果你使用了其它模板,请自行替换文件标注部分代码。)
& _' H# D+ j$ L# h: ~, i
1 s" T. x8 t- g5 y8 j3. 确保目录权限:
# c, q0 q. l7 k% h# R   chmod -R 755 uc_server/data/avatar
" z. `- g4 g, |" Q2 g$ n( ]+ T6 T. _2 B! B) R1 j5 w
4. 进入:* T& H; H* Q/ N. |& r  A! ~
   点头像进入 →个人空间 → 编辑头像" n! A2 I8 r; @, @
   即可使用 HTML5 上传
0 H4 D1 e( w' V2 J  P; Q+ r0 C2 o/ K, V% G
【说明】4 ~3 t! F  u! c1 G1 B4 Z- p% {7 D
- 会直接替换 Flash 头像入口
# t/ s' e# `2 _& ]/ m' H- 无需安装、无需后台开启" E* W& E2 {8 f; m
- 不影响 UCenter 原有逻辑5 {7 Z0 c) z+ m% g/ J7 S
- 保留头像简单裁剪功能(Cropper.js)7 [) K+ T8 F/ c
- 仅新增一个htnl5上传组件
* k4 J* E1 F# q& O

2 G  C  o# R$ q% k+ V7 `8 y- C
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {
    ; _4 z) W8 w& G: w
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));  f- a. |- F1 z; S
  3.         switch($ext) {/ U4 E) S5 ]. @' T
  4.                 case 'mp3':2 r, T$ k  F: L
  5.                 case 'wma':
    $ E2 p3 u/ |+ G7 R
  6.                 case 'mid':, l. G8 Z. u% e  B
  7.                 case 'wav':
    7 P# \% _- k2 L# a
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    ) u0 }0 X. w7 e4 V: j3 H, }
  9.                 case 'ra':
    3 v6 K0 G3 }% }) ]* i( I
  10.                 case 'rm':4 |/ N. A  t$ q, s7 m, S- x& F3 G  f
  11.                 case 'ram':
    0 C3 I9 C' N1 `6 B  d) c8 A
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    / Y4 C. v# g1 \; [& g& M
  13.         }
    # S# G6 }+ ^: J9 r
  14. }! L. ?- x) m; T4 }; d3 n
  15. ! U. F+ n  q( w4 i! w, S# N' N
  16. function parsemedia($params, $url) {0 V( B$ N, V4 ^- r3 y6 v
  17.         ...+ t) q" R2 i' h
  18.         return parseaudio($url, $width);
    ! [/ ^/ h$ D* B/ y
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    5 l  r$ G( c* q& A7 y6 A
  2. function parseaudio($url, $width = 400) {% c9 D2 d, b8 U8 |! E
  3.         $url = str_replace('\\"', '"', $url);
    : n# G' ^( D, i* ]- a
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));1 ^- M. z$ h  S/ R
  5. ' Q# X: t8 H# ?& C0 @8 Y" E( _
  6.         switch($ext) {! {/ u; d6 z- [5 g
  7.                 case 'mp3':# y: a; }/ r" T1 S9 d
  8.                 case 'wma':
    2 l2 u' D; l! o8 d
  9.                 case 'wav':
    7 W+ |* O- A, }5 W  A
  10.                 case 'mid':5 h3 m: `7 [; f) Q/ @7 K
  11.                 case 'ogg':
    . f! p" P- F7 M# l: r$ q; N# R
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    # ~) l) Q- v# ~$ p/ D, o
  13.                 case 'ra':
    + \4 W5 |+ ^! i, U
  14.                 case 'rm':- E) c# ]7 d9 L  `2 ?7 K; |
  15.                 case 'ram':, d. M1 L8 B0 c* a; L- N2 P
  16.                         // RM 无法 HTML5 播放,退化为链接
    5 }. P9 K1 O" \1 _0 f
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    4 g# ?2 Z' w3 l; ]" }' P6 x
  18.         }
    ! V1 Z: J# w5 F) g9 Y$ c2 T6 v
  19. }* H1 Q" W% O: s. Q" @; k) J
  20. " F* ?) e4 `: P1 P
  21. function parsemedia($params, $url) {3 B- |" ]# x! f* v( W* l
  22. 9 j) S* j0 @- K0 Y( T
  23.         $params = explode(',', $params);- a+ K/ N6 Q- c4 j! h+ s

  24. 0 T9 F7 I. t' `* z; r
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;
    $ z, I2 ~4 V/ j- F
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;
    * \/ J3 @8 _4 j
  27. 8 Q' k4 B( ^$ _4 E! K  I
  28.         $width  = min($width, 800);- K& ~- j7 L3 v  [6 p7 R& X
  29.         $height = min($height, 600);
    4 H  x/ V' _6 j4 t
  30. 1 x* p) y6 s5 l
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));. j+ J  w' d8 N5 ?1 {, o
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));; }0 ~1 \, y' V* n* ~1 t% W
  33. + E5 Y% `3 f* j# `$ k) E( v$ z+ c
  34.         /* HTML5 优先(现代浏览器) */& ]. m( @& e2 O% R1 _
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {! l8 |. Z& T. [& z) ]1 O! g) L
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">& _, A' q: _8 _" R2 D6 U
  37.                                         <source src="'.$url.'" type="audio/mpeg">! C0 a! ]# B# r: Q
  38.                                 </audio>';
    ! @% ^- ?$ y" q" L; L% n9 [
  39.         }
    6 [( Z" ]* s# c

  40. 3 h5 M# `1 x( Q: z" V* L2 J
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
    & H. I% i) @! o2 b( s
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"
    3 o6 p# j: X5 l7 f$ _8 Q
  43.                                          poster="">
    ' k/ p4 K/ A' [/ s. `9 n8 V
  44.                                         <source src="'.$url.'" type="video/mp4">% H  S5 R$ A/ _/ z
  45.                                 </video>';
    6 L& [% {5 n+ Q! M1 d
  46.         }3 ~, s' r+ i0 G7 l0 c( Q

  47. 9 B2 ^. L. u7 o9 C8 k
  48.         /* Flash 逻辑保留(但不指望能用) */
    - U  w" {) f* p5 I; z
  49.         if(in_array(count($params), array(3, 4))) {* W  c6 y5 f1 J
  50.                 $type = $params[0];  I" f! O0 O2 a
  51. 9 p. @& D. o/ M# O3 l$ J) }( ?
  52.                 switch($type) {
    / j" L3 U+ d4 S1 S
  53.                         case 'mp3':
    , P% ]8 j) [( w; \9 c, v
  54.                         case 'wma':
    % U- u3 b; O4 ]5 g( o, ]
  55.                         case 'ra':
    ; r3 Q& f4 F  f1 ^: A
  56.                         case 'ram':: `) t# N( Q7 l$ x9 ~& ]
  57.                         case 'wav':  q5 E, }5 V0 s5 M& l9 |6 z; ?9 F
  58.                         case 'mid':/ b4 g% @, @% m9 }& m% \5 Y$ I9 y* Y
  59.                                 return parseaudio($url, $width);, B: e5 [& m2 f$ ^5 U: ]7 ?5 E

  60. % m, s. E4 \4 o* V. h9 B0 A& ]3 b
  61.                         case 'rm':; K4 ^8 q6 s$ N) o( Q  C
  62.                         case 'rmvb':( H; |8 G9 @# t8 E/ P' u  e
  63.                         case 'rtsp':
    " q9 C& p, P$ q8 j4 z
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    4 u" t+ G+ U6 c( m/ m

  65. % S, H2 T  A0 ^9 m9 i' q" m
  66.                         case 'flv':
    * S8 ?8 J4 X/ G5 x$ M" k$ e
  67.                         case 'swf':# `6 m. C  Z* U8 h- y( r; h
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';) m0 M( d' q2 `2 e" {0 w
  69. 9 t- a$ @' I7 P/ l0 t0 W- ?
  70.                         case 'asf':
    # ]2 V) p0 t) H! O0 i3 ^5 B
  71.                         case 'asx':$ i4 ~7 V' a% m! Y- n+ R2 W0 c2 ]
  72.                         case 'wmv':
    6 l1 S6 U& q1 {
  73.                         case 'mms':
    + ^* u0 n$ b. S
  74.                         case 'avi':0 \, F/ k" O5 e! q# Y
  75.                         case 'mpg':
    & |9 [! _. @: m/ {/ N
  76.                         case 'mpeg':6 u5 Q3 U3 d$ u9 ]5 w9 Q9 w0 i
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';& L  S/ R' R, }/ w

  78. / X' c2 k* e# ]. J; W! {9 R
  79.                         case 'mov':
    9 W2 o8 J5 V5 K2 Y3 Z% G% c
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    3 G) ]# h( I$ E. t! H0 {" Y

  81. $ m5 B3 c6 N# C9 g, @& g( X
  82.                         default:
    * b4 w# \% F# j) Y, q
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    . ]0 f: K$ W: B
  84.                 }
    8 t/ B3 K4 r" s" W8 @' \3 S% S
  85.         }/ Z' t' y- O: ]6 Q" o! l1 G
  86.         return;# [% q- g9 `- L
  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) {
    " y2 S6 g/ w2 g
  2.         $w = !$w ? 550 : $w;3 O, E6 Q& s$ D+ J0 Q6 p' V+ s" z
  3.         $h = !$h ? 400 : $h;; B! w: A! R6 K
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);
    - j) r% @2 [& [: I+ E- ]
  5.         $url = $matches[0];
    : C) `0 ?/ ~* G7 }
  6.         $randomid = 'swf_'.random(3);
    3 j( S6 O+ a- Y  ]
  7.         if(fileext($url) != 'flv') {
    0 N% G9 M. Y) u/ U( ?3 C# y! Z
  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>';
    . m, w3 h! C& n6 c3 a- `
  9.         } else {( w0 ^1 s7 E0 L- [8 L, r
  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>';& D* v1 {) j) X, ?
  11.         }7 q9 Z9 [% b0 W/ X+ e
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
    4 B) U/ w1 `& ^2 }7 w) I
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';
    / S: B6 b/ ^4 q, O0 E1 b1 Q
  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-21 21:43 , Processed in 0.026913 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部