【高州情】高州人深圳站

 找回密码
 立即加入
查看: 575|回复: 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身上,
* h8 \7 G0 Z+ m9 I; J9 o9 R5 ?用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,
( s' L! H& g8 M, a' I; G) b- ?虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
/ z8 m3 J1 X# W  `

5 a% \" }2 o+ j: `0 U6 q

& o) d  _& v" \( c' E! H" [- }" ~3 b3 Y9 }
1 U$ W  U) t  a1 u, p0 M0 L( v/ h4 \8 q$ i. G6 W
Discuz X2 HTML5 头像插件 v1.0  2026-05-05# f9 e9 c2 r% S
==============================2 ?: I  ]: k! C' I
【目录结构】
* S$ }, d: U7 {+ vupload/; U6 q8 x5 z! p2 [
├── html5avatar.php        插件后端接口(核心逻辑), F2 ^$ y! l7 g
└── template/
) B: }  Z  L: ~; f        └─ default/
! G4 S" x& u2 c) E            └─ home/
! t! J4 _, C% k- I" X5 z+ R5 z                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)
' G  b. W0 |6 I( F# w+ Q! t5 U' S1 q( a6 |: r) M
【适用环境】
1 x4 V( s$ c2 `- Discuz! X2 UTF-8
% v2 T2 h8 G6 m, w# U- UCenter 1.6
, n, F8 _- }8 h& E. k- PHP 5.6+
# T& x) z  C! r6 f% l/ O( ~+ I) n$ C. C: o( J$ `8 ~$ e
【安装方法】1 R# V  M5 [* ^% f8 \
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录0 Z+ O% w0 S4 ~* ]# U

( d( ?$ S% q  L# Y3 R2. 特别注意:
/ ~1 V" a% Y9 T0 ~# `   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm# e& m7 {. u6 c5 v
   (如果你使用了其它模板,请自行替换文件标注部分代码。)
8 o  S4 _$ ^: {
1 V! a1 x% L) L9 e" m: f7 V3. 确保目录权限:
" l6 ~/ F0 f) k0 F$ `& p   chmod -R 755 uc_server/data/avatar
5 n- [! n- ~) |5 i4 d; I) U# M2 }3 c/ t& ?: _
4. 进入:  H* m( ?7 K4 s  ~
   点头像进入 →个人空间 → 编辑头像
5 R' z) _( A8 ?, X% E   即可使用 HTML5 上传
9 \6 u, y  L6 T: R4 t8 t" A& {& H  C7 ^' h! e9 V6 Q1 |& a; i
【说明】
" z/ l. R, I3 ~& F4 ~- 会直接替换 Flash 头像入口+ ?4 w, }6 G+ b5 L8 {0 f0 C
- 无需安装、无需后台开启
* V0 U1 c0 b! T- 不影响 UCenter 原有逻辑- {; ]- J6 v! A# f8 i. c
- 保留头像简单裁剪功能(Cropper.js)
5 I3 O/ x% O6 w$ w- 仅新增一个htnl5上传组件

3 t4 ~# R" w- A/ x7 T/ q( E# O$ d& X: H
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {
    ' L- y$ [' l( ]  p  d7 e9 v
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    1 r' f( s  p/ C; p
  3.         switch($ext) {
    ! ^2 R1 b$ D, e- u/ r  I
  4.                 case 'mp3':
    3 M$ J' k& V9 ?. E" i6 h
  5.                 case 'wma':# ?- I; C4 \+ P& O5 Y. g" e
  6.                 case 'mid':5 i( S1 s- i7 X1 w. ]! C
  7.                 case 'wav':
    * U: A2 \" E( ^$ Y/ }. K& I& r
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    6 W2 H0 Z6 H: n1 [
  9.                 case 'ra':
    - l6 L/ [5 e1 }" O
  10.                 case 'rm':" \* O6 {9 Y( w& R7 o2 F8 N
  11.                 case 'ram':
    . |% Q4 l8 P1 _' W( g% v! `% ?/ X
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';- R$ p& c' R0 H( q) O  X- v2 v8 x
  13.         }# P, a2 ?+ a5 n0 H
  14. }: g7 m9 a1 S. I: a) a1 d  R
  15. & O! ^! q, e$ `) H7 O
  16. function parsemedia($params, $url) {+ ]. T6 |" L5 }+ w' f' k
  17.         ...( a$ x8 |) O) C
  18.         return parseaudio($url, $width);
    # N$ H" r5 i4 [- F2 J8 v
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件  N0 ?) A2 p9 f4 |: S5 H% J
  2. function parseaudio($url, $width = 400) {
    # Z4 `+ D' r% x3 t( G( G; M1 F
  3.         $url = str_replace('\\"', '"', $url);8 ~0 a2 E" C3 B2 x/ z' w! N8 q
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    - }7 w0 N: x1 T
  5. * ~# b% f! u: F1 @
  6.         switch($ext) {
    " t4 x3 }9 Z) i2 t4 B' S
  7.                 case 'mp3':
    6 m: Q$ e6 ]. A, X* E
  8.                 case 'wma':+ q: `  f, A) }3 }/ L( }1 }
  9.                 case 'wav':: C* [1 a  q5 ]& W7 M  g
  10.                 case 'mid':
    ( \& ~9 g* X4 t. }& T6 g& m2 D
  11.                 case 'ogg':
    ' p1 S3 Y. x9 s) E# S
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';; i0 C$ L$ [( H/ ]
  13.                 case 'ra':& m8 g8 T; z) ~( P7 [- f
  14.                 case 'rm':
    ; w$ b, f; f: N/ `7 f
  15.                 case 'ram':
    0 d1 K' c2 b5 Q' l) y, P* U' f
  16.                         // RM 无法 HTML5 播放,退化为链接
    ; c% m  i; |$ n+ H
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    3 m( n8 G% L/ u+ ]3 H( j
  18.         }" u% B; n- y+ v
  19. }/ u3 g" n2 ^: ?6 r6 U

  20. " H, x: o8 Y' l
  21. function parsemedia($params, $url) {' a8 l, @1 N+ I$ W0 T! G
  22. 8 W1 M' k" V* c  {( C* Q
  23.         $params = explode(',', $params);% }& ]) P4 q) }- M
  24. # `% `9 @1 O9 C2 F% @3 l
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;
    - M3 C8 G' I. F" r5 o
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;0 W) r/ ^( Y9 _+ m' l7 n  _
  27.   S1 |2 v( V- h+ _; q7 j% w
  28.         $width  = min($width, 800);5 h6 N( _8 r, a. m% Q
  29.         $height = min($height, 600);- S, X4 b6 a- j3 e. M5 I
  30. 9 G' Y' D- \+ v
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));2 z+ k) J" W: J$ t
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));! y- \& k( |- f  z
  33. 7 k: c- a5 W3 O* A
  34.         /* HTML5 优先(现代浏览器) */
    / O  {, {! Q! |
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {- i# m/ W& g" j. w/ D2 D+ H* `$ B
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">
    ! f: A' [! |: K+ l1 i
  37.                                         <source src="'.$url.'" type="audio/mpeg">7 C. E. z: p$ N# B; L( W
  38.                                 </audio>';
    5 p" q  P! O% u# _! G; z
  39.         }) k1 V% [" `) a8 V- x6 z
  40. ; L9 l" L# k9 c) d3 I" v
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
    # t3 B# H) ^# m  T% Q, \
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"
    4 P7 T; ?4 Z, J9 o. e
  43.                                          poster="">
    ! M3 ~% \. E5 |( ^, l
  44.                                         <source src="'.$url.'" type="video/mp4">, D6 f4 g+ c; n4 c& B# [
  45.                                 </video>';
    7 F6 B2 _5 O. r$ }1 |
  46.         }  I; w+ @! b+ x' M/ ?
  47. 0 _5 F+ Q# R: m* S" _4 W: o8 A
  48.         /* Flash 逻辑保留(但不指望能用) */; m" s. W% v7 l! T8 r
  49.         if(in_array(count($params), array(3, 4))) {$ Y- o" Q( {+ F4 z" m6 Q/ @
  50.                 $type = $params[0];- \1 w+ K4 A, ]. R6 p5 z
  51. , I2 \' z) }2 M+ |# \5 ^6 t0 w7 t
  52.                 switch($type) {; @$ B# g, Z8 X2 s) V) O. Q5 B" U7 Y
  53.                         case 'mp3':% }" M2 U3 y1 @+ Y7 p
  54.                         case 'wma':
    : V# B1 m" n+ O2 ^% Y1 P  l9 R
  55.                         case 'ra':% j3 o3 z8 Y+ Z. t8 b8 _
  56.                         case 'ram':
    8 ?& `0 Q' @+ P3 `
  57.                         case 'wav':
    . g8 y3 }9 f9 [1 ?! r: h" ~9 r7 e. x- P
  58.                         case 'mid':
    . v* E% H" ?/ w! i# S1 Z; _
  59.                                 return parseaudio($url, $width);
    % l: S  v" z0 F! W4 D! }, m
  60. , e( ]1 E! I7 `6 i2 r( w1 N
  61.                         case 'rm':" [) x# N  Q6 m! M: k
  62.                         case 'rmvb':
    ; n7 B0 F0 @5 ], Y% j) [8 x. {) J( O
  63.                         case 'rtsp':0 m! [# k0 t" c. `8 j! Z
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    2 k4 y  A, @$ K0 @% L6 n
  65. . ?; G* U5 n: _: u
  66.                         case 'flv':
    % ^( S2 i3 E9 [& q4 `! \: T
  67.                         case 'swf':
    . X$ d6 N6 o& x: I' L% ]
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ' t2 D" D$ t, _2 I& a0 U) y) \

  69. 2 c# w) E2 g! j! T( O! g
  70.                         case 'asf':, K, h1 ]$ r: _; }. O
  71.                         case 'asx':
    ! k0 K- J; m4 u
  72.                         case 'wmv':
    5 h3 ?: `2 \) `
  73.                         case 'mms':" O; Z* }. F3 \' e4 C7 X2 |
  74.                         case 'avi':
    3 K& V1 p& I7 Q8 E0 K1 J
  75.                         case 'mpg':
    9 u) _6 f/ P5 g+ p# V! f2 a  p! \
  76.                         case 'mpeg':
    - B: g3 B3 G. ]' B! |) C
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';) N: v$ a( p+ R5 X) [

  78. 5 N' _: `  ^* Q: J2 i
  79.                         case 'mov':
    2 c9 S% ]$ I8 m. u
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';- E, i; N, O4 i7 d

  81. * ^0 y9 ]  b) ^& z# E! Y' N
  82.                         default:& ]% g4 }# R9 w
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    0 Q1 r) S4 P- Q) }' ^9 h
  84.                 }) G+ m$ J* R3 D8 ?/ {1 W
  85.         }
    2 h. t# o" v# ]$ ^# R3 P
  86.         return;9 I" ?& l, p5 n/ X7 w  F
  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) {4 m4 t# L: U. }7 R! U
  2.         $w = !$w ? 550 : $w;( X+ k1 E: ~( }8 I
  3.         $h = !$h ? 400 : $h;# z, K. r! e3 l) R8 H! R) e
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);
    9 X/ N  t2 j' _) W
  5.         $url = $matches[0];+ H0 s  t5 ]- o
  6.         $randomid = 'swf_'.random(3);6 M! i+ D8 x0 p- U. y
  7.         if(fileext($url) != 'flv') {
    9 [8 e) d3 }/ }& l
  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>';; q/ w% \; g- Z
  9.         } else {
      b& k/ @9 c& X4 s$ q: `2 ?% V' g
  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>';; W5 `& A8 z+ O
  11.         }
    : N9 F( A; F( A& I& M
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
    ( a! |7 j! S5 V! @
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';( B. ^+ F4 W; l/ f% O( s
  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-21 23:39 , Processed in 0.027160 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部