【高州情】高州人深圳站

 找回密码
 立即加入
查看: 380|回复: 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身上,
$ Z; I  b2 M7 B/ v- C5 e用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,
4 |3 @+ r" M, {8 l4 F虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。

9 j, |. a! j9 ^% ~1 q' f
4 L; X. e/ @  ]7 N

" f- `& u" v5 d! R2 z
7 N) M0 }3 L5 A' _* w: j0 W) H& s0 p" I  V
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
9 t5 T# V; U/ {0 w. }/ y8 R1 v  z==============================
$ k- }* I; F3 Q0 L; c【目录结构】
. B& a& R6 X* Gupload/
; i& V& y; u3 F3 n1 j; Y1 C├── html5avatar.php        插件后端接口(核心逻辑)5 O* G3 [8 P6 y: e
└── template/9 e& ?3 l+ Q/ E  c. w6 ^1 Q: }4 @
        └─ default/
) ^+ ^5 f$ c2 D/ d            └─ home/4 h' x  a0 H4 O4 E
                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)! D$ W* e; ~# [+ c- _. M0 A% `& n

- n3 S: E2 W9 Y! t【适用环境】/ i4 |& U" u$ Q" j
- Discuz! X2 UTF-8+ ~3 r' R. p4 D( s+ l6 ]
- UCenter 1.6
6 `7 E0 Q2 E% r1 v( G- PHP 5.6+
% m. q- F  Q+ T/ r6 r1 p) `0 U, n3 }4 s9 K0 X
【安装方法】
2 M# |8 @0 Y1 k+ O7 O# }( G9 b$ T5 t1. 将 upload 目录下的文件,按路径覆盖到你网站根目录
. P0 s; g, [& X: X1 U' I' Z8 ]
; ?7 s2 V+ @1 @; i2. 特别注意:
1 h  n) h* c" R/ n! _   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm
; q+ O) Y2 Q" D! b. P   (如果你使用了其它模板,请自行替换文件标注部分代码。)
3 }3 ~5 O1 W( y8 I+ ~+ ]7 k$ c
9 p0 T" Y7 Z4 t* z. j7 {" M3. 确保目录权限:) {- C; [; ?3 @$ J3 G" ~9 t8 ^6 m; z
   chmod -R 755 uc_server/data/avatar6 x$ o5 S6 Q7 r% ^" Y; h
& N8 c9 M& M3 j4 ]' x8 T) I
4. 进入:" A; o( v7 w, z* W
   点头像进入 →个人空间 → 编辑头像
' @0 [. T+ U; }' O% Q. H7 [8 ]% `   即可使用 HTML5 上传
; e( J. Q6 a0 H, S/ T2 h: J
7 V+ w  R- o6 B: Y5 q- e' v【说明】) N; s) a) x+ O2 k/ Q' z
- 会直接替换 Flash 头像入口5 Y7 F7 J1 |. E9 k
- 无需安装、无需后台开启2 d+ c$ O# _8 s3 {, V1 I; y
- 不影响 UCenter 原有逻辑! x2 a7 ^% i2 [$ r
- 保留头像简单裁剪功能(Cropper.js)' u6 Q: H5 G: e! L* w
- 仅新增一个htnl5上传组件
* F- Q5 L5 S6 l0 O1 o5 o

( \5 i" w3 _1 v7 P4 a
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {
    + ^# }2 `( U9 p
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    8 ^+ g* O- N  l; l
  3.         switch($ext) {
      g6 U) Q5 `; e0 ^. m- H
  4.                 case 'mp3':8 g" B" I4 s) V2 ~5 C( E2 }; I
  5.                 case 'wma':
      G9 e; y7 s8 `6 _; C7 R" S
  6.                 case 'mid':% D( u, N* G) m' b  j. ^* O3 t' @
  7.                 case 'wav':
    9 O6 x- \9 r  j: ]( p/ ~
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    * y1 _4 T9 r; r- t+ |6 U. N( O5 r
  9.                 case 'ra':
    * T2 i: j% T% a
  10.                 case 'rm':
    $ c( f1 Z( h+ F$ U9 |# Y' |. Q
  11.                 case 'ram':
    9 J* b6 Y) _0 V: ^
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    9 q/ x) K' g1 `, G" L# ]
  13.         }
    ( X1 d( V6 x" U0 f6 _7 z" M
  14. }
    3 t+ A/ H$ B( h; D

  15. : ?7 d( m( i; Z8 Y( s7 I  A, r
  16. function parsemedia($params, $url) {
    / @' P- ~/ g: W
  17.         ..." I2 [, l* s/ Q/ A- q
  18.         return parseaudio($url, $width);( p0 ^) _* u4 l9 t. ?/ M
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    - @7 d; M2 g6 s
  2. function parseaudio($url, $width = 400) {+ F# J; H9 a0 K
  3.         $url = str_replace('\\"', '"', $url);% w( j# Y5 _/ M& G
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    : @: x6 r( b- y: U$ r% d% B9 a
  5. 0 k$ z' M8 D& t5 I7 a
  6.         switch($ext) {' M1 A7 R; w$ h. y3 t' |4 H% q2 J
  7.                 case 'mp3':/ }" Q  p+ Q9 R; D* B7 k- b4 }  W
  8.                 case 'wma':
    # U+ y5 J+ k: g7 z$ ~* ?
  9.                 case 'wav':. s( I5 A0 G, y/ y+ E2 h
  10.                 case 'mid':
    % l# W. q4 z- n9 R
  11.                 case 'ogg':
    . X0 H" |% _( |' c# K+ P: Y
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    : k8 d2 \+ {& w8 E* j3 \, @( G4 E
  13.                 case 'ra':
    + N( @6 j( g: _+ G; c. I
  14.                 case 'rm':
    - e9 A/ s* l  W  S1 w! L+ K) F" E
  15.                 case 'ram':
    % i$ u$ Q% M; A' g: G# D
  16.                         // RM 无法 HTML5 播放,退化为链接6 y6 R8 G7 O9 c
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';6 R& |3 _8 i" k: b3 `; ]
  18.         }
    - q5 a! x! A- }6 r' G" Z2 [: E( M0 @
  19. }
    & v( Y. e6 n# C. U$ I
  20.   B; ^2 }4 k1 \& q2 A( |) k
  21. function parsemedia($params, $url) {
    0 ^( U: P9 K8 M9 y1 R9 Z. _5 s* N

  22. . {/ }; g+ N4 }- ~- Z+ H$ U5 g
  23.         $params = explode(',', $params);+ i! a! p' i/ |$ L1 w+ q
  24. & v! B  v; q; F+ K$ E/ s8 ?. D/ g
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;1 p; y0 h# a+ F9 C7 [6 q
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;+ r0 m  Z/ e7 i# ]

  27. 4 f' {2 E* [( n* p- c
  28.         $width  = min($width, 800);# A% r8 e) {& R+ c; g* j/ z
  29.         $height = min($height, 600);
    ! w! ?) d' K' R5 {" a/ j; w* v* `
  30. * ^( h* f/ c( z, X, |
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    3 D" Q. C: L+ X  N- Y# q; K* b
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));/ @  G7 _$ I! b" |$ {8 H

  33. ( w3 ^, R7 M$ \0 M+ m0 ?
  34.         /* HTML5 优先(现代浏览器) */
    ' Q" I; c; R$ q  j8 v9 ~' Q* h$ @4 T
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    3 V- M- e+ h  k  C! s" n
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">: T6 E- e3 b. X+ L
  37.                                         <source src="'.$url.'" type="audio/mpeg">: _" R! Z, X# M: d6 q
  38.                                 </audio>';  t" M! G* g4 {# O; y( p
  39.         }
    " Y! ?4 z" g9 Q5 B" x+ J) ]

  40. ' N2 _* @$ g# d3 \4 m
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
    4 |' J3 U" v+ b' ^' Z" P  y4 m1 _
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;". w) T+ p" l+ @2 H0 b4 b- x
  43.                                          poster="">! b0 [: ]0 I% f% R% Y4 ?7 n
  44.                                         <source src="'.$url.'" type="video/mp4">; F, A" @0 ?1 a3 @
  45.                                 </video>';7 g& ]' o' \" r
  46.         }
    7 F- Y0 d0 c2 ^0 N3 e; y7 d* p

  47. ( o7 d* X- P3 r/ S+ n# a
  48.         /* Flash 逻辑保留(但不指望能用) */4 }+ z; s& _5 I
  49.         if(in_array(count($params), array(3, 4))) {
    . D# h, g( x+ I! i0 O, Y! m% F0 v6 B/ w
  50.                 $type = $params[0];
    . }( M! I: r  L- m0 ]( R/ M

  51. 7 E' s* [( S+ `% F
  52.                 switch($type) {
    2 v( h* N$ ]& D" _
  53.                         case 'mp3':
    : S$ o/ j% D) q: m1 U4 [* M
  54.                         case 'wma':) _5 v& V6 v; O
  55.                         case 'ra':0 x7 c4 {- ~# ~; l: Z
  56.                         case 'ram':% J) o! A3 w* `& t8 _
  57.                         case 'wav':
    . _' c2 Y1 x# C) K0 f! H
  58.                         case 'mid':5 w# ?1 t, W) H8 f
  59.                                 return parseaudio($url, $width);* P& c9 b7 D1 y6 L6 `$ N
  60. $ s2 B- ~: r, }7 y% v
  61.                         case 'rm':
    - ?1 R# L. M3 W2 ]
  62.                         case 'rmvb':- u- q1 Q: s- \) y4 c  [) O
  63.                         case 'rtsp':. `# |, a8 L. }6 x7 N
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    " E5 y* P8 x/ M& Z

  65. 8 W7 F/ G/ b1 I5 I- l2 i
  66.                         case 'flv':
    . n- G; B  Q9 I$ F
  67.                         case 'swf':
    ( Y/ N& E' g8 ]  @
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ) z- Z5 {/ K6 Q

  69. % U, w" y" a5 y$ y1 }
  70.                         case 'asf':* |" I- j" t1 D: S6 m4 S
  71.                         case 'asx':
    $ O. W9 |2 A' }
  72.                         case 'wmv':/ n/ z( ?! h- ]5 J" O: ]8 I
  73.                         case 'mms':" \! S8 ?5 e% R& p0 Q0 y6 w+ N
  74.                         case 'avi':
    7 Y0 H0 ^" Q7 ]1 U  x" g! S
  75.                         case 'mpg':- D, j1 z1 ~# U; Y( w2 H
  76.                         case 'mpeg':) w7 @  x  N3 t% s' g+ ~% V) I
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ' S9 p: ^: h) |7 z

  78. $ l9 c/ u; J: F
  79.                         case 'mov':
    . W6 M' r1 K# H% d
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    1 ]" z0 t6 [! ?3 @, e! s
  81. 5 s* {8 v" B' p0 L+ v6 \- T7 h0 c
  82.                         default:3 L( |  L) |5 \. a& e+ j
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    7 g5 [# q4 l( f
  84.                 }
    , w8 P6 ]' n: ?. J2 k9 w# B2 G
  85.         }/ F5 L4 ~: X0 X9 @, E  J
  86.         return;7 Y1 {5 |7 D% g/ s" F  O
  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) {# k! W5 p! [5 I6 V
  2.         $w = !$w ? 550 : $w;
    , z* S9 T* y. f
  3.         $h = !$h ? 400 : $h;
    4 J  M0 b6 p. O/ }/ V, I* N. V5 c3 @9 ?7 A
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);
    " }! A6 {3 [) v
  5.         $url = $matches[0];
    8 }5 I; L8 ]) M8 a# C
  6.         $randomid = 'swf_'.random(3);
    , M5 L" e+ c9 e) Y. m
  7.         if(fileext($url) != 'flv') {3 y; M8 u2 C3 ?2 ]+ }2 \
  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>';
    9 E* d! Q+ s4 p" l! i% G4 d
  9.         } else {
    ; O# R" P6 P1 ], c1 b" D% F+ @- 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>';( ~4 B. ^: d& a5 I
  11.         }
    8 C0 r! e2 C& J' O
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {, t, A! B7 `0 B) q
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';! D5 F) p( b& w; D+ }
  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:29 , Processed in 0.043682 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部