【高州情】高州人深圳站

 找回密码
 立即加入
查看: 378|回复: 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身上,
& m0 |! Q( A  |- y# {% J用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,/ ~1 v* z5 ?$ g9 L2 C6 h$ l
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。

/ a& y$ o% o3 X1 b0 t8 G9 Q8 M) ?, @, K  [/ [: k
( o; ~( i% q5 N6 l( z  i  n: W

( r5 B* X6 @* j. J! |& O8 `: E" ]# @! B: T5 q# A
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
* n" t! z7 A1 K! i0 I- v2 H1 P==============================. f( {  H" Q7 H* h4 C
【目录结构】- |* R7 O* ]  Q* H3 p
upload/
! \7 r* E; U' u" Z- |. y├── html5avatar.php        插件后端接口(核心逻辑)
7 h6 G. k7 h1 ?+ S. o└── template/
* n/ |3 J$ w/ o5 O) f2 V7 W        └─ default/, F9 S$ Y; `& E
            └─ home/% b, {  ]4 S& R8 [/ ?1 [
                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)$ n6 _  V4 h( N6 y5 i

& P7 Z) b3 N3 T4 l+ [& K【适用环境】& v* A8 v, |( S) ~* e& ^  A
- Discuz! X2 UTF-81 f5 S# X% I4 i
- UCenter 1.6
; J0 s) Y$ ~" m7 S" O- p- PHP 5.6+' v  I6 \4 a0 o6 h
, s  }7 p% L- X- a5 j) ~
【安装方法】
0 [. X; |% U! `1. 将 upload 目录下的文件,按路径覆盖到你网站根目录$ I/ R. |6 G) H4 q' f4 W

  c' w/ H# x1 G" d" E* E2. 特别注意:
5 [2 Y  b+ s9 |7 s( U   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm) V5 C$ |5 ^3 i; R$ C
   (如果你使用了其它模板,请自行替换文件标注部分代码。)
) k6 s2 O) t* Y% r/ o: E7 k* x+ g7 L+ L$ s/ t
3. 确保目录权限:
1 e  a/ w7 {6 ^! H   chmod -R 755 uc_server/data/avatar
9 l3 r7 S9 P7 W6 |, E
3 p3 j8 f2 t) J2 d- O. j4. 进入:5 ]+ q1 c6 u. k* O
   点头像进入 →个人空间 → 编辑头像& @. S# d: V1 ?, T
   即可使用 HTML5 上传
: j  W* U2 G' k1 ]
/ a; q2 }1 {/ J1 i! y& p* c【说明】# O) X2 e$ {% ^' g8 N- f$ R
- 会直接替换 Flash 头像入口" h/ q6 `/ x9 ?& i  O
- 无需安装、无需后台开启# L! P& _5 Q/ {0 V: }' W
- 不影响 UCenter 原有逻辑7 p3 w4 K# d$ l0 X5 B5 l( S0 B
- 保留头像简单裁剪功能(Cropper.js)1 J" X) o1 O& v6 S- }# g
- 仅新增一个htnl5上传组件
0 L: |  u4 U0 x

# Q, Q7 ~! z2 u& a% ]; ?0 L: n# N
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

Rank: 1

金币
53
贡献
0
威望
2
最后登录
2026-6-9
帖子
1
积分
5
UID
3000
6
发表于 2026-6-9 20:41:31 |只看该作者

管理员

论坛测试[砖]家

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) {9 V% {2 {6 M% L; |" U
  2.         $w = !$w ? 550 : $w;
    6 K+ a9 ?, u! R* \4 ]0 Y/ s& q: r
  3.         $h = !$h ? 400 : $h;
    3 b2 v  |1 K, o
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);
    0 D1 }" [6 ~! e1 j+ U0 i4 }
  5.         $url = $matches[0];
    . }& S  g; E1 }+ }  L, I; ?
  6.         $randomid = 'swf_'.random(3);
    ( `- |0 `1 v$ M2 ~! G/ K
  7.         if(fileext($url) != 'flv') {* a! c* P/ _6 v( j
  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>';
    ! N/ M+ N7 L! o; {
  9.         } else {
    , s4 E9 V8 ]3 D4 i3 v  ^1 J' B
  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>';7 W5 r3 ~$ \0 c+ J. k
  11.         }( n0 Q+ X0 e3 p7 W2 P: v4 N
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {  A/ x8 A5 `+ }5 u  R
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';  c: u! ^+ x" }8 P- h) v
  3. }
复制代码
这个世界只有10种人:一种是懂2进制的,另一种是不懂的。

【情系根子】〓 https://525247.net 〓

个人业余电台:BI7ILX   守候频率:1343212JJ08

管理员

论坛测试[砖]家

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) {
    & i7 C; X4 T. U3 x0 W) p/ @) [: `
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    7 L8 ^% j7 r; D. _9 l4 p
  3.         switch($ext) {  d. P/ D( Q9 r
  4.                 case 'mp3':
    3 a! Q0 s' J6 U8 f( w8 n) S
  5.                 case 'wma':  }! l* I& V  k6 M
  6.                 case 'mid':4 n) |' z2 x+ A3 |+ x
  7.                 case 'wav':" T8 M9 y# e( M" O# E
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';) V9 _2 }; P# `
  9.                 case 'ra':% {8 p$ ^6 ]- e, D: g% a" {+ g
  10.                 case 'rm':3 D$ B6 B, |+ a5 U! F8 b$ k- {
  11.                 case 'ram':: S, g8 r  F0 a2 ~4 ]3 J
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    8 T1 b  X- q5 b6 ]7 C2 n# L
  13.         }8 D' {' G$ d1 S9 j: D3 R
  14. }- y( X4 l. J3 ~, ~* g0 A+ h; o

  15. : K8 x6 Q7 A- n/ ]) t/ j$ ?3 B5 }" |
  16. function parsemedia($params, $url) {# J) V' T. K# \) V5 ~' v4 R, c- ^
  17.         ...8 X- A- w7 l7 M2 \5 B
  18.         return parseaudio($url, $width);
    2 A9 t8 X; S6 [& P0 `3 @
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件; A& K4 z. z: n) ~) L
  2. function parseaudio($url, $width = 400) {
    9 p0 `  @( @4 D% W/ B, i" b$ v- M
  3.         $url = str_replace('\\"', '"', $url);  m4 Q! S6 A; m0 L  o
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));& _3 k+ g6 S  |1 x; M* I" s- o

  5. 1 V  a' y2 P5 Q; r$ a
  6.         switch($ext) {
    & w4 C$ |3 G' _8 H8 a; q0 ~) u7 ^$ t
  7.                 case 'mp3':: Z" B8 V7 T" m/ A3 W  E
  8.                 case 'wma':0 `5 Y; C( l* t- Y$ e
  9.                 case 'wav':
    ) z& X2 ~) h( b( @% _! \* U4 w
  10.                 case 'mid':
    4 R7 {6 C8 Z; }
  11.                 case 'ogg':9 B/ h5 r- Y3 h! a9 y+ `: L) K% r
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    8 j) W: X+ p" K8 V) k
  13.                 case 'ra':
    ! K0 m5 y5 b9 S4 t$ Q/ E
  14.                 case 'rm':
    . U  T0 s2 L1 g) J1 l( }
  15.                 case 'ram':
      ]) f# L- _4 k2 Q6 q, b/ D% N8 Q
  16.                         // RM 无法 HTML5 播放,退化为链接3 g( W7 ~$ ]& K8 D
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';! l/ S. X8 V( f3 K1 o
  18.         }
    ; F) s. I' p: {' h) @' b: o, b& S
  19. }
    9 }4 ]2 j; Z% J# b! r8 g4 U* n
  20. & M, G4 o5 O8 [! v) o- ]
  21. function parsemedia($params, $url) {
    : q- ?+ }$ v+ M
  22. : U+ [- k: r& c
  23.         $params = explode(',', $params);  ?/ ]! }: a1 E5 ]
  24. 2 {' `% b& G& ~- w! s' G
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;
    , T' C7 Z5 ~& [" C
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;
    . c. A% O  B/ R( o/ R3 K
  27. . d9 `0 a1 k' `( |% h. f' `! c
  28.         $width  = min($width, 800);
    ( F" I2 x- p  p% Q" V9 m$ i5 A, h
  29.         $height = min($height, 600);! V6 g6 Y, L! Q  ^. h. W
  30. " b6 D% O3 O: R
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));$ ^1 O# ?7 H; a% o" ^9 `* l/ a
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));' x6 \  D! ~; n/ V; u% y
  33. ) Q* E* w3 q" g% \+ D
  34.         /* HTML5 优先(现代浏览器) */9 C9 a5 s" e0 x3 p7 b
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    ! o) D) O" H' }$ Q2 [* j; w6 q
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">
    " Y) H8 d! N/ `( y* X2 m1 [0 K' d
  37.                                         <source src="'.$url.'" type="audio/mpeg">5 J6 n4 k, o- b
  38.                                 </audio>';1 A9 T% G0 y5 s+ |
  39.         }
    # F, j9 n  b! f$ c

  40. ! i8 R# _5 i! R: b2 h6 P& S
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
    ! u6 l: v* t' k! V/ J
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"
    1 c/ y' f8 F, E2 U6 ~
  43.                                          poster="">! t  A+ {- P& ]* p+ v. u
  44.                                         <source src="'.$url.'" type="video/mp4">
    ; m3 G5 N- p3 P) b/ W0 G" x
  45.                                 </video>';0 h' c0 E5 o4 h2 G! n
  46.         }; b' K8 u1 e; S( l4 _$ P
  47. 3 W! K0 i' {9 U$ G- U
  48.         /* Flash 逻辑保留(但不指望能用) */# q. q- X- [! a7 s
  49.         if(in_array(count($params), array(3, 4))) {
    1 G1 s" I, y3 ?6 `- \7 e, b( Z5 a
  50.                 $type = $params[0];
    $ v' X2 M+ f" |$ q$ Y3 N" ~9 y
  51. - m$ ?: v8 |; ~. J
  52.                 switch($type) {5 ^4 |5 a' Y! J/ L7 e
  53.                         case 'mp3':
    6 H8 }3 F' Q+ n8 t
  54.                         case 'wma':
    3 g" K; p2 k4 h) U" H6 g
  55.                         case 'ra':, L- G3 ^7 M# g/ s
  56.                         case 'ram':
    ) a; g0 ?# l2 U" ~
  57.                         case 'wav':; Y- _- K* v. p* v1 N$ c( c0 Q
  58.                         case 'mid':0 R. s3 M  e5 |- O# i; `
  59.                                 return parseaudio($url, $width);
    # k6 _8 [% {! T8 v) R

  60. * a) q' a6 B+ a
  61.                         case 'rm':6 l+ h. v1 T' @) v0 }6 m; [
  62.                         case 'rmvb':
    ' L, Y( F" ]5 f0 E
  63.                         case 'rtsp':
    : c! f" F' M4 N  Y
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';7 I& l; Z. f! S
  65. - @' C7 [' Y' Q( i( T+ E' t
  66.                         case 'flv':
    9 E' {. A% ]" I0 J1 M- I; f
  67.                         case 'swf':; x8 z) L& }) v) M. o6 v
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ( x6 U  L; ?$ @5 C" h

  69. ! p: u' j* S" A% F* ^% J" R
  70.                         case 'asf':) X' s6 Z! A- Q+ e
  71.                         case 'asx':2 j) \* r) V0 T! m- S# ]- B
  72.                         case 'wmv':
    ) E& O, q0 L7 V: U
  73.                         case 'mms':. U: m7 [2 c3 Q& ]* E* h- y8 S0 {( o
  74.                         case 'avi':1 D6 [! @4 k. o2 z7 i8 p# l- }0 c
  75.                         case 'mpg':$ |% B3 o) ^, {
  76.                         case 'mpeg':
    . W6 X  W" ]) G* M* `' i& x
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ) R. _0 {+ M, ?

  78. ! B. P7 a1 i3 ~7 `3 H" `  E
  79.                         case 'mov':$ ~5 [9 n1 R8 S+ s& T
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';4 C0 W" d9 B* t. p: k4 ]

  81. . `8 x' X) w. _8 E0 ]
  82.                         default:6 q' F- P" D2 i6 c, Z
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    0 X0 T& `. Y9 ?# u
  84.                 }( X" U) L/ w1 M* |
  85.         }
    ! t" [* t% J4 N, k0 d8 J
  86.         return;# O0 I3 L7 n* `! y6 E" L
  87. }
复制代码
这个世界只有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

论坛元老 网络高手 新人进步奖

2
发表于 2026-5-10 22:58:22 |只看该作者
打包收藏放这,免得老人痴呆
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入
这个世界只有10种人:一种是懂2进制的,另一种是不懂的。

【情系根子】〓 https://525247.net 〓

个人业余电台:BI7ILX   守候频率:1343212JJ08
您需要登录后才可以回帖 登录 | 立即加入

Archiver|手机版|高州人深圳站

GMT+8, 2026-7-28 15:08 , Processed in 0.026832 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部