【高州情】高州人深圳站

 找回密码
 立即加入
查看: 598|回复: 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身上,6 d- Y" c# e, L% S
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,% v6 a  c) u& f5 {( L
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。

* G" ^8 a1 e# e" @
$ |+ R9 i/ {5 Q, _4 p

, r( e+ m9 {$ W) A- i5 D1 _" i
5 r  Z! K# v3 u9 G% ~( B6 u5 y' {: ^* J% ^6 R
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
  k( |: p8 G- j& \/ p- [' H% o==============================
7 ?0 T! I; h! ?1 F【目录结构】
- p; g0 e/ w7 R% e( Tupload/3 b# U# O9 S3 H2 a
├── html5avatar.php        插件后端接口(核心逻辑)5 K4 S& a- e) E: X. X6 u, A
└── template/5 F7 y) Q0 @* P2 C3 u3 P+ W9 a
        └─ default/6 t9 V. [% E1 o) M  N6 F4 k
            └─ home/
8 ^6 I2 R& {0 }+ H# ]2 ?' [                └─ spacecp_avatar.htm        前端模板(含 Cropper.js). @! Q" ?1 H, U, P( {
+ P$ E7 N9 _) [5 m5 x1 \
【适用环境】
% F, f, j) D/ O( a! W7 P& T* [- Discuz! X2 UTF-89 R- G% i9 K* w& ^; l( L7 g+ f
- UCenter 1.61 v, W6 X) F: E& ^6 b1 p
- PHP 5.6+
1 @! y* u* s  K/ z, }. n2 u% w4 u
【安装方法】1 K2 o2 Q. n. G+ F
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录. m  V) z. K# D, f! B( n6 D
( E2 \5 w! L$ x8 H
2. 特别注意:
6 X( z$ k, F& X8 ^& q1 [   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm* N/ `- s3 y: p4 ~
   (如果你使用了其它模板,请自行替换文件标注部分代码。): z# P! L; Z/ A" t
1 c8 B1 H& P+ f- X) ?" m5 T
3. 确保目录权限:
! P. J9 @' v5 [1 H; b2 ~   chmod -R 755 uc_server/data/avatar
, Q+ v$ P' L5 N1 V# a8 s
- d3 r# V0 p. s+ n  B4. 进入:5 R7 J. ?' ~8 n5 F; U5 y, P
   点头像进入 →个人空间 → 编辑头像
0 Q  O7 N4 C! W' J3 a* P   即可使用 HTML5 上传( M4 i9 |( ^; @- w
0 d/ A0 l" P2 f% [( B1 ]- i$ g
【说明】. `0 x8 s( w" K
- 会直接替换 Flash 头像入口2 W/ T$ l, o* k8 ~6 p# I  Y
- 无需安装、无需后台开启
- E% p! `! v/ s/ x* ^* F7 v. V/ B- 不影响 UCenter 原有逻辑
; V( F5 x- G& F! h8 g# }( c- 保留头像简单裁剪功能(Cropper.js)
* ?& N# y  J" X- 仅新增一个htnl5上传组件

9 r; d9 C0 [& o) N8 L7 c2 M- j/ @' }) M% u
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {/ m3 ^' c8 R7 a2 M$ W7 j
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    ) E2 Q# C7 J; k. {/ g: ^4 `
  3.         switch($ext) {& ^: w. f4 D. _, h2 x7 S0 T
  4.                 case 'mp3':
    7 a: @/ N- Q! m) w5 ^& S! ~" c& G/ ]
  5.                 case 'wma':% k$ O8 {4 \( R/ ^( f1 r7 d
  6.                 case 'mid':6 L, y5 U& k" @# l6 h6 _
  7.                 case 'wav':
    * ~8 T+ l! p" Q2 j9 O$ }
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    ( ~! h* j& f8 Z2 e2 N1 a
  9.                 case 'ra':% H' h* f6 x! c9 E3 [  r5 y
  10.                 case 'rm':; o4 O' T2 {/ W: X  g& s
  11.                 case 'ram':
    , W9 S. f1 w& M
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    ) [6 E! k/ J; H; \$ `$ a
  13.         }
    6 d4 R$ i9 |$ ^- M
  14. }
    % N% K. x) X/ c" A$ C  b  J
  15. * d, E1 u5 A. f; p# P
  16. function parsemedia($params, $url) {
    & @' \/ [- p" Y
  17.         ...7 |2 H9 z  G/ b# O3 j
  18.         return parseaudio($url, $width);
    : \' T, G2 }% [
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    # T/ \" [4 k! N
  2. function parseaudio($url, $width = 400) {
    , A0 j/ Y* M: Y/ ?3 U
  3.         $url = str_replace('\\"', '"', $url);; |7 s6 A5 q9 w3 c9 Q
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    9 Q/ `, {  O  e( B2 i! \
  5. % f. \! f# o8 e+ M. ?
  6.         switch($ext) {  [7 }$ z4 a! J0 [" n! S
  7.                 case 'mp3':# {  x3 z0 Q! L& \: x$ n
  8.                 case 'wma':
    / v- ^3 s2 F# C" ~9 c8 @
  9.                 case 'wav':8 `) `  n" ~/ N3 J6 V' L' n, [$ m0 q
  10.                 case 'mid':
    9 j; z0 G: R# g$ H4 f' D) I) q
  11.                 case 'ogg':# _4 j& [- U6 w2 N1 H8 d
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    6 X1 V1 W  O# a- l0 X$ {2 o! d
  13.                 case 'ra':
    ) f  m4 f$ g" y4 `1 C
  14.                 case 'rm':
    3 `, o) V, _/ N5 e+ ?8 z. d
  15.                 case 'ram':
    8 J, a1 z% ^2 b# J: ~' k8 m
  16.                         // RM 无法 HTML5 播放,退化为链接
      V7 }. R! E# t$ G3 i, E
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';; g6 X( x7 l: `, _
  18.         }
    2 L; [% }0 w8 }$ [1 t  s' k) x1 I: K
  19. }* w1 H; c( i% O6 b# G7 ~% K( Q
  20. 7 V, s7 ~9 W& o0 e
  21. function parsemedia($params, $url) {, K: Y9 g6 F' a$ F% Y4 B
  22. ( z& e, c- G" j  e6 u& r
  23.         $params = explode(',', $params);; Q8 `9 d' W& {

  24. . a; j+ B4 D0 @1 `2 W
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;
    1 P. {' [2 K/ B: R
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;
    7 \% W( O% }( J
  27. 5 S) P" ?+ v7 F* \: d0 O
  28.         $width  = min($width, 800);
    & X! }( K# l/ D/ I8 \! f
  29.         $height = min($height, 600);
    2 k% A& z% e% Z' O% j! }. W
  30. $ C9 j& J4 \" `7 L1 f; _* l+ y
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    3 H0 ~1 i( q$ x' z+ n% R! \
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));) q9 v3 ?$ g6 s6 c
  33. ( x" K0 x$ |+ B# K6 I. C  {% G; f/ r
  34.         /* HTML5 优先(现代浏览器) */
    ) H( F$ U+ B+ N! M
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
      v# |$ r% o) H
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">
    1 q7 M# Z5 k6 i# I
  37.                                         <source src="'.$url.'" type="audio/mpeg">
    2 M) v& P' i7 N- [& G
  38.                                 </audio>';5 h5 s! z! A1 Q6 m. m
  39.         }: x/ N, P  C9 \7 x7 p

  40. 7 s$ Q) o2 N0 h- }' B9 T$ o
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {$ W# E( {! E- H, Y
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"
    ( A; L) t# R8 a1 B  c0 {& ~7 p& Y7 Y9 S, ?
  43.                                          poster="">
    2 g7 D% n5 H: n" T. d
  44.                                         <source src="'.$url.'" type="video/mp4">2 V: p' f' g9 k. X* ~8 [2 [
  45.                                 </video>';3 x. y* H2 |0 J
  46.         }* E# k+ G4 b5 y/ t2 m) O

  47. 9 a) I* M1 E/ |/ l3 ]! o5 f
  48.         /* Flash 逻辑保留(但不指望能用) */: ]5 a) Y$ v/ n7 w6 v! P
  49.         if(in_array(count($params), array(3, 4))) {$ l8 L+ y- L1 Z  @1 g  t
  50.                 $type = $params[0];
    / R) q) q; a9 y- L# P, q. @$ B" m
  51. # B# z0 _# j. A7 S2 U/ o
  52.                 switch($type) {0 J* N, c& n5 f9 U
  53.                         case 'mp3':
    1 L9 u& ]7 V2 L( p
  54.                         case 'wma':9 \6 K: j$ Y% p! L! n) E
  55.                         case 'ra':) X) S) `6 x  X* R7 `/ ~  a
  56.                         case 'ram':7 z! A/ g, P  p/ c) M9 _
  57.                         case 'wav':
    ) ?+ w6 c; e' R' f- e$ ^* d9 z
  58.                         case 'mid':6 }- C& m3 L! i" b" W4 s
  59.                                 return parseaudio($url, $width);. u9 @) ]; V) i* F$ @; K* F
  60. ' t& N5 O7 [4 @7 i
  61.                         case 'rm':9 e4 M; [1 N$ h5 L0 \* y# J* ^
  62.                         case 'rmvb':! v# l# ]* a+ n* {4 Y2 G
  63.                         case 'rtsp':$ B; x) x6 d3 @( \
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    2 }4 M; ~, k- d" p$ K

  65. # B) N# l$ i, j: e! p
  66.                         case 'flv':: k& ]$ A" K3 d7 C8 B/ O
  67.                         case 'swf':
    ; ^4 y& B- j2 W! B2 j
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    & D, A3 z/ R% e) M* G

  69. : _6 {# _& w' S- O$ e8 f
  70.                         case 'asf':
    3 `- o' `" f0 P; J2 }3 i. F9 s/ G
  71.                         case 'asx':
    ( i1 ?! ]% a& d
  72.                         case 'wmv':
    4 c4 ~+ T$ @5 l0 b7 @( g( Z
  73.                         case 'mms':
    . t, c- }7 c* c; y4 |/ ~1 T0 Q, P+ I
  74.                         case 'avi':
    7 ^6 P6 S" D3 u) L" @
  75.                         case 'mpg':) i- K: V( A/ A  k
  76.                         case 'mpeg':( p( P* i2 W" R' W
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';" C& H0 ~) t- w9 Y7 T* `# Q
  78. 4 x) T* g8 @- K  j+ q. H! s
  79.                         case 'mov':. B2 J9 `+ [+ i2 H$ w: i$ C' s4 V
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';- l) U# o1 x% Y, q% m/ L- d+ g
  81. ( {8 e' Z# u% ]/ f8 H2 ~* m' o
  82.                         default:% C6 b; d, o/ x) n. F  \# E
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';9 ]& t/ w4 @, W. ~5 G8 |7 U$ S2 @
  84.                 }7 R% t8 y+ R# q$ @; a/ r2 s8 e% U* P
  85.         }% l% G5 G$ G: n- J4 n$ j4 C: L" O
  86.         return;) n9 S( |4 ^/ }
  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) {- `. l3 v3 I5 S" o
  2.         $w = !$w ? 550 : $w;8 E0 `0 X! @, i+ B
  3.         $h = !$h ? 400 : $h;6 R0 N1 ^/ S4 r& H' C9 [8 x4 ]
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);/ P# x2 M0 O, n  x8 r
  5.         $url = $matches[0];; A) n6 ]# G" t  ]$ Z* y& x4 i7 [
  6.         $randomid = 'swf_'.random(3);$ r& {; s& J- Y  w& H
  7.         if(fileext($url) != 'flv') {
    & F! ]- S6 e: U8 v) U0 n
  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>';
    / P9 T" ^# Z' ^0 O9 B6 Q0 \5 b
  9.         } else {! |8 O1 |2 F7 t0 J
  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>';3 z- f; Q: d) o$ J, ^5 a9 d- x
  11.         }
    " Y1 D. q6 \* K9 Y# Q6 B. a
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {9 z) f1 ]1 h+ B0 B  C  U
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';0 j: l% W! I9 _* I4 g9 w
  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-23 17:31 , Processed in 0.026379 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部