【高州情】高州人深圳站

 找回密码
 立即加入
查看: 589|回复: 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身上,, J+ u+ h- X. V  ?; _5 e* x
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,% L6 {3 I" @4 o/ o" u* t# ^
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
- f5 I# [* `) `) _1 {

$ s- `/ y4 y* H, A7 g# p$ h$ ?

; X. U% q3 l3 H5 m6 v/ y6 ^/ t7 W0 W6 i; L- M! j

3 |  T/ X. I. y3 e# m
Discuz X2 HTML5 头像插件 v1.0  2026-05-052 J0 r3 T0 r- Z3 C( @
==============================
5 C, k3 x' x6 V【目录结构】
  B! {4 C# h6 k0 Vupload/: x$ O, k. B, D$ U% j3 I& N# e1 w# v
├── html5avatar.php        插件后端接口(核心逻辑)
  H& c, i2 E. Q8 r; P. ]& s; O1 @└── template/
7 c$ J+ |1 i* b5 Q8 E# G, y        └─ default/
( i+ \( a% I; \9 G            └─ home/
) U& L' ^0 q) v: @& A) c                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)
4 f- _3 g! c$ o# `) f$ j" r( S6 E6 e/ {' B9 N6 f' O+ a+ {; t7 Z
【适用环境】2 ?( P0 }! i* T) ?& u7 C
- Discuz! X2 UTF-8! [# B: q0 z4 s$ j& b
- UCenter 1.6
( u$ j/ z. ?1 ?- PHP 5.6+
0 {. i; e0 E2 X5 m! q! |$ H
. j- u. O7 U/ x1 ~7 M2 x1 j: |【安装方法】3 V6 g7 u/ a: \+ A# E6 v1 \
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录
' u% J5 [+ V: {, {& }# J
0 v8 I- ~7 t( |: b( \: R( a2. 特别注意:7 X0 K/ B+ A0 m% e
   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm9 q; z3 W: j4 N$ b  n
   (如果你使用了其它模板,请自行替换文件标注部分代码。)
$ g; l; R' W* }5 _
9 o3 c8 x9 }9 r; y+ T/ s9 t. q3. 确保目录权限:" h* Q7 H' `% }6 M
   chmod -R 755 uc_server/data/avatar3 ]  H% `6 Y6 j" S( T9 T0 R
" n" U& y: x1 e
4. 进入:
8 s1 t: ]/ i2 F   点头像进入 →个人空间 → 编辑头像
. g$ v* Y- |. N. `2 t5 D/ h   即可使用 HTML5 上传8 [& Y/ E. C  X% Z  B% ~5 }

5 n  u! V# \1 F5 d- Y* y& p1 O: q7 m【说明】" |% N2 N  B' o' z+ G8 m- K- R
- 会直接替换 Flash 头像入口
( Z. f$ [% z0 W- m& `( a$ I2 L- 无需安装、无需后台开启
; Z1 C2 H) Y- D  _% a8 W6 b- 不影响 UCenter 原有逻辑
9 v1 I8 A8 S/ H1 j3 v- 保留头像简单裁剪功能(Cropper.js)' U) Z% J. u8 {8 ]- a
- 仅新增一个htnl5上传组件

5 t( s% t  Y! L( q2 d
. ~9 S$ X  [" t2 H9 V& 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) {
    * y; @  [, \1 a' y
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));/ O- B# g. |8 K# r/ E3 R# t/ n
  3.         switch($ext) {
    4 B6 U0 i6 |6 B) M
  4.                 case 'mp3':5 D& N; |% n- x6 X! F* ?8 q. \% X
  5.                 case 'wma':
    $ H" h. E6 V3 L9 ?) V/ e
  6.                 case 'mid':+ g/ B- J1 c* k1 }
  7.                 case 'wav':* \; Z; _4 U( p1 X/ f" f  _
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';# J3 C% g  H, r+ w' y9 Q
  9.                 case 'ra':
    * J% L& Q. Q  M4 u
  10.                 case 'rm':0 O3 d' e- r, e
  11.                 case 'ram':# E, M. D  Q9 A6 M. d8 g
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    $ j- C9 s8 a3 s4 D+ M
  13.         }
    , ^* \7 U2 g0 o8 J7 s8 z) S
  14. }
    5 C- I7 M2 e3 I* M

  15. 6 s9 u6 ?9 i+ Q; P
  16. function parsemedia($params, $url) {1 R' c7 l$ ]( u0 g& C. _1 `
  17.         ...) v/ [. I9 {2 t. F9 [0 M5 W
  18.         return parseaudio($url, $width);
    . z5 M* ]1 f. w% X  v5 {1 q
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    0 m) n3 j6 A- c# G8 q: t
  2. function parseaudio($url, $width = 400) {
    - F5 R8 w/ n3 u' C# |
  3.         $url = str_replace('\\"', '"', $url);
    " }* y) u/ h  g- q4 p
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    & `7 x& E4 @2 @5 e) [, s8 A: _9 X1 n

  5. - ]4 Q8 c" ], V& _
  6.         switch($ext) {
    ) ~- ?  z4 D! m( e
  7.                 case 'mp3':
    ( C! I6 z. C; F# b$ [
  8.                 case 'wma':/ o, K" v( r9 d+ |3 J8 J6 E
  9.                 case 'wav':
    6 q$ w. J% r( j, x' B8 J4 k# C
  10.                 case 'mid':
    , X. l2 D7 j3 `  d& E
  11.                 case 'ogg':0 g* A; d) y) G. r( H) c* u7 N1 e) C
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';! M8 H1 ^: U* o; z, [
  13.                 case 'ra':
    ! Z5 p' q8 \( A9 |* J& e' |
  14.                 case 'rm':& o7 {2 i. _5 }: E) P
  15.                 case 'ram':
    0 L, I' P8 e; }. m. t3 W
  16.                         // RM 无法 HTML5 播放,退化为链接
    ; u  ?2 o: Q5 k# ~+ y$ U
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    : i9 z4 Z2 ~0 k1 v3 X
  18.         }0 ^+ s) r9 }/ d" e+ v
  19. }
    3 h$ y+ _4 D% F$ C

  20. 2 i$ X5 V, g7 w+ T" Q/ q
  21. function parsemedia($params, $url) {
    , n+ h. g( ~! ^
  22. $ I1 D8 C/ h2 {- v5 o. r7 K1 U
  23.         $params = explode(',', $params);0 v2 x4 J+ e9 I  u. P
  24. 3 C6 _$ E5 B: E( J$ l
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;
    0 E- u5 O6 h+ D; h; {+ q' u
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;
    0 D! P6 ], y. ?1 O) {
  27. 3 q! R7 \2 e6 Q& K) c: T+ @
  28.         $width  = min($width, 800);
    0 ^" W+ Z( m9 H6 o
  29.         $height = min($height, 600);
    $ c4 \+ ^  u8 \& b3 W6 H% ~

  30. - p/ u8 L- w: e
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    # R- z$ T( e& I1 X" u7 l% Q
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    / Z7 V: ~* z! _
  33. , g2 k2 w' E' D8 {: ]
  34.         /* HTML5 优先(现代浏览器) */0 E" F2 E4 q. \' U8 `% ?
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    / T$ H1 W) i6 d, s8 I! V+ e' `9 k
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">- s+ c7 S' @3 n( y2 u. i& A
  37.                                         <source src="'.$url.'" type="audio/mpeg">* m0 K: D- u/ Z7 |
  38.                                 </audio>';
    : q  c( j; i' |6 n# O( y
  39.         }' O/ d. J4 O/ Z
  40. ) z* j6 [4 p) b% s% v* u+ F
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
    3 ?. }( @; v( C
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"6 r- ]) _0 n2 F4 |
  43.                                          poster="">& l2 Z; i6 w) b$ y6 q
  44.                                         <source src="'.$url.'" type="video/mp4">
    0 a' Y8 w. h( e4 r0 z& Y! `9 B4 ]
  45.                                 </video>';& h" n6 H: W$ ^" h' ?. ]% k+ p
  46.         }6 h! {; S- Y  ]
  47. ' |' j/ Q3 n* K; {+ C1 M, B; Z
  48.         /* Flash 逻辑保留(但不指望能用) */: a. A! w8 |" C$ k. s
  49.         if(in_array(count($params), array(3, 4))) {
    * D/ _& r& E) }' q8 P" I: u- ^
  50.                 $type = $params[0];% D1 S- N/ A. R$ l; _6 w! v
  51. # K6 `& I5 [8 ?. T8 f/ y; L. Y
  52.                 switch($type) {4 W- }# ]0 ~8 g% y$ H8 B
  53.                         case 'mp3':
    ; x: f/ D1 b& L
  54.                         case 'wma':' N4 a( ?; Y5 D6 h7 l5 Y7 {6 t
  55.                         case 'ra':
    ( C) r- S9 w# w1 w
  56.                         case 'ram':
    + b9 `" g/ e, m' H  T5 f
  57.                         case 'wav':2 m5 X# ?$ F  f* V, M6 e9 ]: e
  58.                         case 'mid':, s- k. u" h) d* e
  59.                                 return parseaudio($url, $width);
    4 A7 d$ p7 @1 Y" M: p5 d! V

  60. * h% R3 O) G& Q) a, z* W3 f
  61.                         case 'rm':, v# i9 J0 r+ g6 ?  a3 b: t
  62.                         case 'rmvb':+ I, j" K) H" B9 R
  63.                         case 'rtsp':
    . D" G% z8 U- l
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    " ^" Y; _7 l7 `) n. ~: F3 s- F" k! o
  65. 4 T% V$ S: s7 a6 u. V/ u% \
  66.                         case 'flv':
    . [# i0 V! ?. D+ O6 S) U" A3 \+ ]6 y
  67.                         case 'swf':: ^5 L8 Z; }" |
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';2 H) `- E- f3 a/ s5 w

  69. / D& e  q1 _2 c( Q; O: |! ]
  70.                         case 'asf':4 X, r3 G: A# f
  71.                         case 'asx':
    ! g6 W* `% \0 P5 ?
  72.                         case 'wmv':
    + P' D9 R; h& p/ p! `9 ]
  73.                         case 'mms':0 y8 W0 R% t' U+ }5 R8 ~% U
  74.                         case 'avi':
    $ k. H' m# w) k: |$ ]6 t/ F
  75.                         case 'mpg':
    / u" Q# l" k9 S; y3 a
  76.                         case 'mpeg':
    8 [* Q; d3 q9 R8 `  i: ^
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    0 j3 E3 L4 _8 i1 Y/ Q) @" r- C! _
  78. + L* a, n% h3 v& D" b* _9 Z% s) d
  79.                         case 'mov':+ g; X& w! n. L' H; _7 w! @" d/ o! z5 u# p
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';! J( Z4 U% T4 Z$ M: J

  81. % N* Q( M2 P- t- L
  82.                         default:
    ( _$ ^8 \( r$ C" N6 T3 C& d
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    / ~( A% C% J) T* x7 g
  84.                 }
    ! [, f1 O: b1 W& [
  85.         }7 D% T( D% c/ E$ R
  86.         return;
    . N8 ^* E# Z7 x* a
  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) {  |* ]( H. g. t3 p6 b7 H7 u
  2.         $w = !$w ? 550 : $w;
    9 `0 S" a! k- l$ h
  3.         $h = !$h ? 400 : $h;
    6 A; M+ I) A* F5 F9 i! g  G/ j' z' [
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);1 q! c4 e: O* N# ?0 F9 B- o
  5.         $url = $matches[0];2 M. f- Y& Q& x% x
  6.         $randomid = 'swf_'.random(3);
    3 D# O4 D( T. v3 S* F: Q7 Y3 }
  7.         if(fileext($url) != 'flv') {2 w) U  g$ C6 r$ f) i' G# ]
  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>';
    # J1 ?5 F/ Q5 l8 |4 i# Z; f
  9.         } else {
    8 U" Y! ]5 k7 L  E% F
  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>';
    ' C" s* Z% W' L0 s! K
  11.         }
    3 R. |3 @* \+ H
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {) l+ h7 W$ Q! l) A) I/ F
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';" f. i/ _! M. H9 U( n
  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 19:47 , Processed in 0.029414 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部