【高州情】高州人深圳站

 找回密码
 立即加入
查看: 757|回复: 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身上,
+ f( O- |5 N% F* A! s2 b用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,  i# w  D: A7 X- W4 i, I
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
# z  j4 i- i; G/ x1 h0 u

, I7 M. f* [& k! |
; L( x' A3 \& D' A- u5 q
0 |: f7 F% L: S* u' e) l

; B4 L4 [. \" k
Discuz X2 HTML5 头像插件 v1.0  2026-05-05: Q$ w+ Y# w& I. S! N& C, \8 U- `
==============================" n3 r7 a0 c- Y( L4 w8 ^3 Q: A
【目录结构】
1 ]8 f, W# \# R5 Q8 @1 oupload/
! h  L6 z& F% m├── html5avatar.php        插件后端接口(核心逻辑)
8 z- h- h% R6 q: V6 ?└── template/" r/ H$ j4 B6 f; E
        └─ default/& s+ e" t/ G/ h' T+ j1 z
            └─ home/
5 D5 M! ~' [+ S$ `& H                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)
3 U6 C' A$ j* \) x: G) c0 c* e5 o# b3 m9 a( ]6 h1 g
【适用环境】% x8 I, ]3 c, {) U. {- o1 d9 \
- Discuz! X2 UTF-8' @/ p7 E( {$ q/ {) J6 T
- UCenter 1.6- T  j% g5 |$ F) |# W2 }" ?
- PHP 5.6+
+ U2 b, N) u+ L- ^$ M% k2 V& ?) D3 W. R: b
【安装方法】2 ^2 Y' N6 r3 d1 c( M1 H; K8 o
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录
) k' n; Q$ m0 h% h" i- F0 ?( z1 p. E6 s; |5 b$ Q/ p8 B9 P
2. 特别注意:  t# |: l- G* ]) t2 b
   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm% ~# Z8 [, [9 G6 s
   (如果你使用了其它模板,请自行替换文件标注部分代码。)
% x8 e; \8 ]- S% Y, L3 _5 J" b3 l  e2 r$ U9 Z
3. 确保目录权限:
+ {0 ]5 m+ B" B' k5 Z% F9 P, `/ y* R0 I- a   chmod -R 755 uc_server/data/avatar. X) n# ]3 \5 g- p
0 E1 x! m+ H, k- d6 `: I1 \
4. 进入:
1 N" E1 l3 y0 E, N! g' x   点头像进入 →个人空间 → 编辑头像
3 `: f4 Q8 Y+ u8 {1 N9 A( P   即可使用 HTML5 上传
5 A+ J: r/ T5 |) z' {4 d4 _2 c+ m! W: N1 W' X- e4 l& G$ e  q
【说明】  _& U5 P" o3 s! ~1 D- Q
- 会直接替换 Flash 头像入口9 P7 q" y  X# N3 ~# s; b) Q. r
- 无需安装、无需后台开启5 |2 ]. ~' m+ [6 J1 P9 S
- 不影响 UCenter 原有逻辑
/ e- F' [6 A2 R# @; y- 保留头像简单裁剪功能(Cropper.js)
5 i0 `: z( f0 v( b4 Q  @- 仅新增一个htnl5上传组件
8 o' b* H8 U: R, Q5 i8 g, g
8 C8 R5 D% |/ O, D: R
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {# F( u& S0 `- [# O; ?  Y$ e
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));6 X$ S9 K' S2 |9 O, K
  3.         switch($ext) {& S, _' ^0 I* u9 l# U
  4.                 case 'mp3':( w8 x! a( J4 S
  5.                 case 'wma':
    % Y/ t* E# {: v
  6.                 case 'mid':' j9 u, s. e% S
  7.                 case 'wav':, [8 R0 S5 o  R& A' z
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';" e& y8 V" p8 g+ v/ n) V) y& K+ Z
  9.                 case 'ra':
    * c2 w- j  m* M8 B( `/ [6 T
  10.                 case 'rm':7 J5 S  x* ?; X# p& Q( F
  11.                 case 'ram':
    ( A: J/ Q. O3 q( \- O& \1 C- F
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';" `: c( C8 S/ o# d! ?- P
  13.         }1 c) d) K  T: N" e& a+ y( U
  14. }
    1 e4 ~! z6 s2 X  b# x, U3 R- A

  15. 7 P3 _& F3 F8 c. `6 M
  16. function parsemedia($params, $url) {
    8 N- E* L# f) c3 o' F
  17.         ...
    % L0 r: Q3 A9 \, @
  18.         return parseaudio($url, $width);. O% o7 n% B: D0 d! Y8 B6 z& d
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    , ?+ _/ ]7 p- c4 r% \' ?1 o
  2. function parseaudio($url, $width = 400) {
    1 n0 W9 r5 o2 Q3 n7 |
  3.         $url = str_replace('\\"', '"', $url);. Z* @% Z0 n: J/ G3 G3 p
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    ! D( Y: T' O& P3 F
  5. 4 g0 H. N, {: O7 ~7 C& n' p* c
  6.         switch($ext) {
    4 x2 p$ O/ U. y9 H& j. d
  7.                 case 'mp3':* `5 T/ ]# w* s! J3 N, k
  8.                 case 'wma':
    , V* l6 r; _. P
  9.                 case 'wav':
    8 f7 _4 }+ f( c' T& ~) U" K
  10.                 case 'mid':
    6 g: N- B7 W' A3 M" p9 N/ ?
  11.                 case 'ogg':
    9 |& Q9 a/ g; `) H9 N( Z& T; y' }
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';' q+ t0 n. O% m1 |1 ?  m
  13.                 case 'ra':
    ; M' g# Q& E+ K: ]6 P
  14.                 case 'rm':# g) |1 X1 k: ~1 ^' S0 \
  15.                 case 'ram':5 T7 g- a: v6 a* j, `
  16.                         // RM 无法 HTML5 播放,退化为链接# _0 ~) i1 V. g' c& y% U
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    $ E2 N, L  s# V+ d8 M1 D; Z
  18.         }$ G" U* U2 h7 b9 ]2 p4 S/ M2 {
  19. }8 S& Z8 x4 R: w2 f; ^1 g

  20. % ]* F7 |$ H2 ^2 N0 l$ \# O
  21. function parsemedia($params, $url) {
    ) f" C' L0 A3 m" ~* k& K
  22. * U6 H4 i2 a: M3 L$ Z8 a8 d3 ~
  23.         $params = explode(',', $params);
    / H5 G! O- x- n/ h

  24. / R# f% M$ P9 M' U/ Y! _, W3 @+ i+ M
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;; v/ o( l. H; `8 q0 Z8 D
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;. u3 I3 o4 j& a# k" g# q( q4 T7 G
  27. % ~, j3 Q2 {5 i
  28.         $width  = min($width, 800);% A0 m9 S1 n, {2 R2 R! N
  29.         $height = min($height, 600);
    * @# `! Z# a  A, R9 y/ }
  30. & N, X( D  @, O" X
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));3 E7 P- w7 \5 L5 E: W
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));- L9 H5 p2 t0 y5 w

  33. " l& _; F0 V' b5 O
  34.         /* HTML5 优先(现代浏览器) */: O% g# x' _) K( C% s
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {' N  q5 o6 P# o# e% I; F
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">
    7 t2 E' n: s9 F* w1 v; r
  37.                                         <source src="'.$url.'" type="audio/mpeg">/ M$ h! s1 R2 T  N9 ?2 R- H7 r+ O
  38.                                 </audio>';
    6 p& X) N0 t7 a) Y/ c( Z. |
  39.         }+ f' g+ g  ^  Z% G9 d
  40. 8 }6 z) ]! ~$ w( \" {
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {8 |( E4 t/ O+ m) p7 J- v
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"
    . d; t' w5 E. E4 S. q
  43.                                          poster="">) Y4 H' X. R. n' g
  44.                                         <source src="'.$url.'" type="video/mp4">, F" p: n9 r: ~* m& P& B& {7 @
  45.                                 </video>';  t: s& A; L2 Q0 J
  46.         }3 B7 u( q+ h. k$ ]6 c
  47. ! _4 u; v/ G1 a) _
  48.         /* Flash 逻辑保留(但不指望能用) */; P2 f" ^0 i' C  P
  49.         if(in_array(count($params), array(3, 4))) {
    , j1 I5 S7 U5 v1 I1 }% X. v
  50.                 $type = $params[0];. e7 H+ _7 z% Q6 T2 ]
  51. 9 s; T, q( o6 h/ u9 a3 G' r/ k
  52.                 switch($type) {
    7 s. i$ ^. L) k& C( _6 D
  53.                         case 'mp3':
    0 ~5 t& a6 G. }; B7 u9 E
  54.                         case 'wma':
    ( T: J6 g* N3 h" l+ C/ P+ |7 M  }
  55.                         case 'ra':$ [: P; V4 T: Z; {
  56.                         case 'ram':
    - ~: [8 }3 y- C/ _& T
  57.                         case 'wav':2 _& v9 X& E6 I# \
  58.                         case 'mid':
    5 s6 [, t% F) v
  59.                                 return parseaudio($url, $width);
    # a% _* b( E* r5 S

  60. 4 `: K8 J8 F  |# L( I( w3 S( [- ?
  61.                         case 'rm':# M7 M4 K# t+ k/ C2 g, w- f7 J2 v
  62.                         case 'rmvb':
    . F. i: Y* _8 \
  63.                         case 'rtsp':
    6 X- ]/ @9 A2 P5 W6 f( m0 e+ T# m
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    7 z' J. P& R8 `8 D9 g* e5 u( H
  65. % m% ]% }. e! z& {1 p- `
  66.                         case 'flv':
    ' H7 [) p# P$ ~5 p
  67.                         case 'swf':4 x" J; I, T; J
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ' Q. Z" q- i  ]0 D0 O  G
  69.   g! `' f: L2 R+ y3 a( h
  70.                         case 'asf':
    ! S, W& D8 \9 p, I. T( B
  71.                         case 'asx':
    7 ^5 Z$ ~4 c  B
  72.                         case 'wmv':- N% e3 ^- b( H- p7 @- n
  73.                         case 'mms':
    0 O/ r3 \( ?# A4 ?3 y' j
  74.                         case 'avi':6 Q, q* p; ]& x$ d% l
  75.                         case 'mpg':+ o. [% ^" n6 m& T
  76.                         case 'mpeg':. r  T7 L) W+ L2 K3 Q2 R# ^  O8 W
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';7 s: E( b$ D$ _" x5 m4 h, N' K

  78. / r& S, x" o# x- R8 r! \
  79.                         case 'mov':# m  E; M& m  A( l
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';: {3 Y, {# h% T3 o3 _/ ]; w
  81. ! q7 s( Z8 R1 J! X1 R$ C7 K! z1 ^
  82.                         default:0 }0 W) j& ]# R* x7 V! y
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    + A7 F8 B1 [0 Y, i: C& h1 ~
  84.                 }' x: U; U- g6 e0 z$ a' k+ E
  85.         }
    . l( Q$ j: k: M# g, Z- C2 J
  86.         return;
    & _0 e6 E5 S/ r+ `+ x4 A: }/ ?
  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) {
    % L0 U, S7 P4 n: q7 s
  2.         $w = !$w ? 550 : $w;' `2 u( z2 k1 B
  3.         $h = !$h ? 400 : $h;
    6 i9 c6 A* g6 E, m' p" X& W
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);+ J% o1 g! {' m' D/ z
  5.         $url = $matches[0];
    2 D% V8 i& |! E! X" [% y
  6.         $randomid = 'swf_'.random(3);8 y. N- I) ~. h( G: ~9 |
  7.         if(fileext($url) != 'flv') {
    . \- c0 Z5 ~' X% e0 ?+ a9 }
  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 P1 O4 c; K8 y3 ~  _
  9.         } else {
    0 V2 o  Q2 w& V+ 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>';
    . k# a0 i; Z) u( `
  11.         }! w4 T% W3 b+ Y" p# }, E! k
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
    5 t0 W' j- |  O8 e. ^
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';) t  j9 Y; u" c0 a
  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 16:09 , Processed in 0.026136 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部