【高州情】高州人深圳站

 找回密码
 立即加入
查看: 383|回复: 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 \" W4 J( a$ K& e( ]* A/ m用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,1 M5 S' J3 f) Y. b9 M! \* k
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。

, p9 I* j9 L9 d* X6 h& Q: {& p' g5 Z9 g4 n2 h' y# g" A7 k
1 O" j, Z2 X# D4 ^/ ]. f

$ |* @: g$ b7 {
6 m8 \# ~. @1 Y7 Q- P* A
Discuz X2 HTML5 头像插件 v1.0  2026-05-058 h/ z* g8 U8 b9 B, x. f
==============================
/ f  r2 o, r& y& @: L【目录结构】5 s2 ]/ a: D+ h+ x& q4 N! h% S) H, o* k
upload/" O. e4 X3 z0 e
├── html5avatar.php        插件后端接口(核心逻辑)( Z/ t/ g4 F& K) F5 k9 c5 X* y, Z
└── template/
1 z% D/ g% m4 ^7 i( ?' }; {        └─ default/* d% E) f9 J) |: ^; C
            └─ home/
6 Z" L; g- `+ G+ c/ n8 {& m! \                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)) S$ e' l( a* K6 `6 F+ u$ ^

: S! n4 i# k: n. k7 x9 O【适用环境】
$ z: E' U0 d% n, F& ~( t- Discuz! X2 UTF-81 _1 ?% _8 Y, V7 j
- UCenter 1.63 f/ u) O! n$ A7 A+ T- W
- PHP 5.6+
* j, ~* U& N( G& s2 {6 W" G" L) a: d/ c( N, D: j/ H( F5 J
【安装方法】6 ]) X. m0 v! {- t
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录
0 l2 C, n4 R+ M# j. ]) V3 [$ z. M  a, w: k7 {6 N9 N) i
2. 特别注意:& Y$ d- s- M' |: e/ k& }( m
   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm
/ c% h1 E( x% e0 l' Q   (如果你使用了其它模板,请自行替换文件标注部分代码。)
% A! {5 s7 R, S
7 x9 @- u2 Y* ~/ e2 L/ G3. 确保目录权限:2 E* ~8 H% s+ Z3 g9 {; ?! X8 u
   chmod -R 755 uc_server/data/avatar
: K+ I  T5 ]7 {# g. ]) k4 n9 M1 M5 ]
4. 进入:
; @: o' g# A3 C) s   点头像进入 →个人空间 → 编辑头像# ~) W+ U% X! X, v* h6 A. Z, ^1 p' Z
   即可使用 HTML5 上传( ]. j3 e; |* P/ W) P7 G3 H% L8 B

$ X3 d0 t; \! _  t. P【说明】
! G6 s1 O& M1 G- 会直接替换 Flash 头像入口+ W& K) Q/ N+ `! L3 }  ^. L  O
- 无需安装、无需后台开启
8 r* x0 x- P$ Y; h4 s- 不影响 UCenter 原有逻辑. T5 t6 b' _* f8 n
- 保留头像简单裁剪功能(Cropper.js)4 s7 e$ Z( T0 j
- 仅新增一个htnl5上传组件

8 s, A( h+ O  _+ ^: i* H
. e" T6 l" B" v/ C1 C3 H' J4 L; `
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {# q; o+ l) F, U" H
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));: Y2 t/ O% @" m% x% ^! A
  3.         switch($ext) {. X6 X& Z1 T" l% c  Z3 @5 v
  4.                 case 'mp3':* l/ k7 T) U5 z$ M
  5.                 case 'wma':% z' Y$ E* K9 A6 i
  6.                 case 'mid':) I8 E8 F# ], M
  7.                 case 'wav':
    9 V  [* e8 I2 P/ E+ [. t% v% K
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    % U$ y- X, X8 O) m
  9.                 case 'ra':5 J9 x* R& m$ d1 D0 ?6 I+ ]
  10.                 case 'rm':3 ~4 e0 v% [$ P# Z7 j7 t$ Y8 i
  11.                 case 'ram':# n; {( @. s" p- {! `( e1 C4 Z
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    . j/ h; @; y" y
  13.         }
    1 |4 Q0 S' w+ r  I5 c
  14. }
    0 l2 m8 [) L( r0 {  T2 S

  15. - n3 Q: p0 K$ x3 a# J; A
  16. function parsemedia($params, $url) {
    & @( k+ n0 f& c! j) u' r- q- Y
  17.         ...1 |" B8 o7 u# \, P. H/ W: y
  18.         return parseaudio($url, $width);
    0 P& C9 S) B' s6 G% B% }! e7 |! r
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    : X% O- T2 r# N0 K. M
  2. function parseaudio($url, $width = 400) {3 t, I) O  t2 W% l
  3.         $url = str_replace('\\"', '"', $url);! O* ^9 C; b9 v& C
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    & I# N* \- [# D. D/ A6 j

  5. 2 @# v5 W4 S5 z- X5 o
  6.         switch($ext) {
      `9 I9 [' l% X  F' Y! N% O
  7.                 case 'mp3':$ ^7 ]9 f" w5 I
  8.                 case 'wma':- [* a, i3 D1 b- }/ r2 [9 A
  9.                 case 'wav':
    , D( N! i) N; n" {, V9 {; G
  10.                 case 'mid':
    ) A; _8 `, O8 A8 R# T
  11.                 case 'ogg':
    9 e8 a% o6 F+ d3 |$ x3 A8 Z  X
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    ' m- l8 c8 N: I6 V- e" B& n4 h
  13.                 case 'ra':
    # I$ C; n. @3 ?1 B
  14.                 case 'rm':' b+ k3 z7 J* d# Q: [6 x! `' _/ I
  15.                 case 'ram':- H4 h% l7 }9 d9 z, c
  16.                         // RM 无法 HTML5 播放,退化为链接
    1 ]+ J  H  G* v3 Y3 x% O8 J9 T
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';- \/ c5 `' S" m! D& G- u" T
  18.         }+ k2 {+ z/ r$ m" H* |
  19. }
    3 a$ J3 b- N% D
  20. 6 c6 g3 `( ?2 k4 s+ j8 Z+ G& @
  21. function parsemedia($params, $url) {* P3 D& {" ~2 v; f- R) U: I' v
  22. . V. M  K) K  C' L
  23.         $params = explode(',', $params);* g7 d1 d8 L8 R  p; Z1 \- e
  24. 1 B% F2 @0 \& u
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;) T7 b2 y$ t0 T  D
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;7 `' [, D, {8 ?) j
  27. 1 a  F* h- J( v- @" W
  28.         $width  = min($width, 800);
    5 y% ~. k& ]: c& ?9 d2 ~
  29.         $height = min($height, 600);
    ' Y5 I0 c4 [5 n1 p& q

  30. % u0 r, b' W& R4 f2 u! r3 I
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));4 K; q; p, Q; _
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    * O( |4 q4 c2 ~' J. |& l
  33. " ^- p/ i4 c- Y* ~+ t" B+ q
  34.         /* HTML5 优先(现代浏览器) */
    4 a; x; }+ Q7 N3 o
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {' G; K3 m7 M6 j% z' w; ?) l" f7 N
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">: m7 W- D7 F, a- ~! a4 ]+ y7 B
  37.                                         <source src="'.$url.'" type="audio/mpeg">
    2 I% _0 d! o3 c) [/ F
  38.                                 </audio>';
    * V' V: |( b2 \2 Z" T
  39.         }2 d. W+ r" w: i

  40. % p3 I/ q0 A" e, J
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {' b% ~4 t3 {; H( T; N) G  @
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"1 \' _; K8 i$ Y+ I) X
  43.                                          poster="">
    7 N9 q, |4 W8 p) [( P4 l/ z8 w
  44.                                         <source src="'.$url.'" type="video/mp4">
    & ]2 _% ^+ E2 I  q
  45.                                 </video>';$ F6 G: S1 \+ R
  46.         }
    : F% [6 y" |7 @1 i6 i

  47. 4 U" j6 i; }) ^1 \
  48.         /* Flash 逻辑保留(但不指望能用) */7 z$ l8 v" g: ?9 _, B  x9 g
  49.         if(in_array(count($params), array(3, 4))) {
    ) u" Z7 n% @, {
  50.                 $type = $params[0];; P7 h9 A) f) `: `* A% c) _1 R
  51. 7 D) O" Q* `( h) O
  52.                 switch($type) {, c5 s$ X. S' x7 ^3 j4 V
  53.                         case 'mp3':
    % J' n9 [# [1 G: x9 D/ `( Q  `# X
  54.                         case 'wma':
    0 [3 A/ Y( A* d5 D" R& j" S, I
  55.                         case 'ra':
    7 }+ U2 ], M! S" O1 _. i; O
  56.                         case 'ram':
    . x. z7 s: L( ^& g: S8 @
  57.                         case 'wav':1 |/ m% t' |8 Z
  58.                         case 'mid':
    , ?& z0 B0 |+ D5 F' g2 [1 J2 I
  59.                                 return parseaudio($url, $width);8 H* w' r1 J2 h5 E6 ]& C0 z

  60. % t; j, Q" L- o' y& G& Z
  61.                         case 'rm':3 g* u8 x" Z, k1 r: k
  62.                         case 'rmvb':
      P* p4 h) D. D* E# w
  63.                         case 'rtsp':8 u% v- `+ K! Y6 W: p7 X
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    " K+ `- w$ y- W. i
  65. 9 s- S1 b% N& C3 l5 N: y) t
  66.                         case 'flv':
    * T0 m$ o9 q- P
  67.                         case 'swf':
    ( U; d  f6 M4 D* H) W
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    - b6 I6 A& G& R8 _9 F) A3 u5 I

  69. ' L# y' ^# ]2 m4 |5 t0 j" @
  70.                         case 'asf':
    ' a" i" q. f) D( n* h
  71.                         case 'asx':
    " p+ D% Y6 B6 H+ |, E
  72.                         case 'wmv':0 Q1 I+ D% P" z/ M" x% A
  73.                         case 'mms':3 c, i6 B) \4 n0 @- S
  74.                         case 'avi':
    * M0 U' i; ~$ @& z5 k" l
  75.                         case 'mpg':. r4 Y$ c! G8 ]9 g( K
  76.                         case 'mpeg':# W8 l( I% A# C5 W" Z8 K1 k! }; C# M
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';7 s% i6 f8 g: j+ l9 y1 ]

  78. 4 W, w8 G8 r# i& O  @' k3 E
  79.                         case 'mov':
    " Z7 X3 z$ T- o& P+ w1 U; z8 P
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ' N1 a/ y% {! }% F: ?8 H% x
  81. - K# T' Y1 c, O8 I, L
  82.                         default:( j9 q; f; s1 y& }' C; |1 N
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';: i" P* O* u8 }+ @- h7 _9 l; l
  84.                 }
    ) i$ n, D' B6 E  @, {3 N- j  N
  85.         }
    7 t2 o- ]& G) C' Z# E# x
  86.         return;! }6 \) u) N2 C/ Y% g1 |2 E) l1 h
  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) {
    ! D; d) X8 k  y9 L3 v
  2.         $w = !$w ? 550 : $w;) G2 d% T4 c1 p
  3.         $h = !$h ? 400 : $h;
    ) n7 E. z6 e4 C+ X, X5 m
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);5 e. I3 u, M, F9 P
  5.         $url = $matches[0];
    3 G8 @& ], M( {
  6.         $randomid = 'swf_'.random(3);
    $ {" t) [3 t; D$ J$ H( f( p2 Q
  7.         if(fileext($url) != 'flv') {) q+ c$ ?. h9 h4 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>';
    3 O, |! X) _$ Y0 X
  9.         } else {
    $ g6 T* e- V0 c# A: z8 c+ |7 A
  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>';
    ! Q3 @; i) [( j* T) a9 R
  11.         }, R9 g0 y; X9 u; A$ s
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
    ' J9 E+ p! D4 E
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';1 Y  \1 a8 y$ S& m
  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 18:07 , Processed in 0.031863 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部