【高州情】高州人深圳站

 找回密码
 立即加入
查看: 580|回复: 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身上,0 G  |. y6 r. d
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,
' d  W1 U+ j' u  G+ {( z虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
5 R7 m* n& C) `+ f* w0 k- Y

/ z8 x3 n; o- i. f1 n2 Q
0 c% y7 r- W0 w+ \% q0 t
  `6 r. z- P+ V; z, w2 M
  N5 M$ N& k$ O7 C
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
8 K) p$ M- l4 f; h' f2 s0 Y==============================3 j& t( t/ E( I  M3 l
【目录结构】
" R: @6 x0 n8 E. Mupload/' ]" q7 L$ `( y: v1 o2 Y$ @1 P
├── html5avatar.php        插件后端接口(核心逻辑)
/ q$ |1 U4 R: }( ]9 \4 n9 }└── template/
' M, f: G+ P5 r        └─ default/
# M. f8 U% }8 J1 b7 S            └─ home/
' V0 ]! E! S% V" p                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)+ X4 l) ?6 B( D& s$ a4 W6 H
/ u: M7 T' h& j3 L1 u: |
【适用环境】# ^: D( m0 ?5 ]; r6 X8 c
- Discuz! X2 UTF-8
3 b: `* A/ w( e5 f$ g& ~3 ]# M- UCenter 1.6
) m$ S4 P# S9 O) F5 |9 k6 E8 A- PHP 5.6+
$ }: Q% z" b3 _  x" u1 A' `" y7 w$ u, B9 f7 W5 E( N. d" ?
【安装方法】: B, M. y# m1 {6 D9 @
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录2 i8 ?7 R3 j) E2 P/ e

) I& H+ o4 D& {4 F. B! G! m2. 特别注意:' i7 ]. _- {, g" h1 }8 f
   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm+ l3 d$ i. W  T8 q) u
   (如果你使用了其它模板,请自行替换文件标注部分代码。)
; a6 V! W3 a5 Y: S9 ?6 X0 h% |
0 L7 x7 A6 t& f5 F  G" y, J/ q9 I3. 确保目录权限:9 V5 y+ K* p: l' ?' m! y+ j& l
   chmod -R 755 uc_server/data/avatar
2 I, A( m8 \4 e% h4 q4 G; N
) ^# h# q) I! ~! e" l4. 进入:# m6 m% |7 }6 i, q
   点头像进入 →个人空间 → 编辑头像
/ B+ D6 g& y* P! G% N+ P   即可使用 HTML5 上传$ {& ?1 D, F7 B: e3 _% u

: j( V+ i, e* ?3 D9 R8 E【说明】
. B, s' j) n: O; X5 U- 会直接替换 Flash 头像入口3 D" d% R1 V+ ?& A4 W) |
- 无需安装、无需后台开启
* S  O' M& E* \4 Z* i& M0 X* E- 不影响 UCenter 原有逻辑4 _7 W" A2 F1 ~. v, x
- 保留头像简单裁剪功能(Cropper.js)- a+ u) O% K1 m
- 仅新增一个htnl5上传组件

9 p7 \: q" h1 T/ v" ]9 M) @+ n7 u7 w" Z4 n* `1 ]
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {) ?0 s6 n7 Y  G
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    + v: M! W. u1 q  A. R
  3.         switch($ext) {
    , Q/ u3 ]; J3 J" K
  4.                 case 'mp3':* ^# n! h& E0 j! n
  5.                 case 'wma':3 C% i# w. e! E4 y$ B4 X! ]) l, \
  6.                 case 'mid':5 j, n: x2 i  E
  7.                 case 'wav':
    - d3 D" }$ I$ K( B" j- G
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    3 V7 ?! ~+ o" ?# i( a4 q: }* L
  9.                 case 'ra':
    / m9 t. F% e  g: s! P' |7 _; l
  10.                 case 'rm':* R0 R3 @4 p! O- Q0 v+ u/ A
  11.                 case 'ram':) C: p% b, P" c, b1 A1 G6 Y: z
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';/ O9 l3 j+ b  I8 O
  13.         }
    6 m2 G6 p% ~8 S$ f: K
  14. }& k" t! [4 i. C- e9 P

  15. " y2 E, O/ M; p$ d- ?2 a4 j* @9 f
  16. function parsemedia($params, $url) {
    4 w) y: w0 `/ D) p( k2 b
  17.         ...  k+ Y! a7 _' g8 a3 E
  18.         return parseaudio($url, $width);
    5 ~4 F/ u( s4 L/ H% i# O9 e: x+ M
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件9 u" d/ z8 i! S2 a. H& N( u
  2. function parseaudio($url, $width = 400) {% _4 e& t* e: @% T, X) [
  3.         $url = str_replace('\\"', '"', $url);1 T( _  l9 R( v
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    : ]" S: [  g) \& Z' G
  5. ) P6 P6 G# |% [/ W( t6 I4 n. Z
  6.         switch($ext) {
      z) I: }* }! q9 a- z% @
  7.                 case 'mp3':0 ^4 d! W& x. e  ]" B: B
  8.                 case 'wma':
    . d; u; G0 G/ G# U! ~
  9.                 case 'wav':3 [5 ?1 a( ^6 ]
  10.                 case 'mid':
    . l" P$ O. h' W' F( _$ [& S
  11.                 case 'ogg':4 h8 \" D0 Y& r( q0 w
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    , ~) W- U5 l  Q) u4 J7 x+ w
  13.                 case 'ra':
    2 h0 @( y6 w1 W4 J/ y  q" _! N
  14.                 case 'rm':1 m5 p* _0 m. U$ ]) P
  15.                 case 'ram':
    , Q$ C5 L1 \* ~* M: \3 V2 @
  16.                         // RM 无法 HTML5 播放,退化为链接; e9 q& `& B) X" F
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    / n. k! V1 r7 Y4 \
  18.         }' h8 N* q# ^. Z! K  Q  I! a' d
  19. }
    , @9 D# P7 p5 R8 ~# K* |
  20. ; K$ g& _) `8 q$ j
  21. function parsemedia($params, $url) {
    + X! [; C8 ^4 x: v5 A

  22. . |3 i5 m' Y6 I7 v
  23.         $params = explode(',', $params);
    " M1 ?; l+ v% K5 Q8 V7 i. |0 e  d* A

  24. - W) Q7 x. Z; z5 w. |6 L; |
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;3 ~2 E; @1 K' @
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;
    ; u  ^4 s  h( O  Z/ W2 i$ I0 Z' R7 U

  27. 6 D7 D; K+ a( v/ _/ k3 R
  28.         $width  = min($width, 800);5 B$ ?* }- ?# `# w6 }! M
  29.         $height = min($height, 600);! H/ J/ s7 J  |
  30. . o# [7 ~9 K' v. Z4 }$ |
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    8 [9 {. d, e& ~% z) t5 u: {
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    2 A' m3 C* B: z3 }! y2 }
  33. $ f1 \4 q( f7 z) ^. ~& x
  34.         /* HTML5 优先(现代浏览器) */
    ' C" ]6 S2 @: \" h+ c, W0 T
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    9 l7 ]1 Z1 x/ i2 s8 S8 o" b
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"># ?0 k/ t9 V( o/ V3 k. p9 [% T
  37.                                         <source src="'.$url.'" type="audio/mpeg">
    . [& o5 h2 ~6 @4 w- b) ~
  38.                                 </audio>';
    + a: ?8 y1 \* X1 s1 r4 \0 H
  39.         }
    - ~3 q# U4 Q  e' f' [& [! z" K4 Y0 ^
  40. + ]' j5 j; e, O9 O# a% a
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
    * D3 k9 o1 q5 {+ g  M" z% M. y
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"/ Q$ u' \' f+ t. v
  43.                                          poster="">3 x# `4 o1 B* N# @- B- x: c
  44.                                         <source src="'.$url.'" type="video/mp4">  @" }2 d% V) Z3 @
  45.                                 </video>';# c1 C. O& @* J. w+ x: n* n
  46.         }* n, r9 c, G4 ?6 D  n9 _

  47. 6 H# R) ]2 f* v6 X. H
  48.         /* Flash 逻辑保留(但不指望能用) */: l% P1 i: B  }& Y
  49.         if(in_array(count($params), array(3, 4))) {+ Q3 n' o( j5 |1 D% f4 Q
  50.                 $type = $params[0];4 X* x- i$ o7 h4 O: n
  51. 2 `. N& n( `1 v5 ?* x
  52.                 switch($type) {
    7 l; ^0 l- E" S4 O8 N
  53.                         case 'mp3':
    . ?$ S4 a; f8 l- c8 ?. Y( v
  54.                         case 'wma':
    1 V0 e; R1 c' R; q5 d# ]( t# q
  55.                         case 'ra':
    . e4 n8 ?- [4 b8 S0 T" s
  56.                         case 'ram':: ^& z  G9 L. j* t$ r9 l7 Y
  57.                         case 'wav':, Q" F/ L  L$ y0 F
  58.                         case 'mid':4 o0 C3 X" B; @+ P- M9 ?9 d
  59.                                 return parseaudio($url, $width);4 g1 y. ?, t, _. D* }

  60. 3 S# Z+ @. j4 e5 x% {& ?3 L
  61.                         case 'rm':7 m0 W; |2 [: `
  62.                         case 'rmvb':8 M9 u: r8 Y* X0 k0 y
  63.                         case 'rtsp':( k8 g& y2 X) L* J# t' i9 V4 Y2 e
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';3 T5 V$ E4 p. m6 A+ j; U, N& C2 {

  65. ' q  [3 g7 c$ L8 S% `
  66.                         case 'flv':. D" f. `6 B' M8 V* X3 J
  67.                         case 'swf':* R9 i/ ]& e; r
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';" l. z6 Y0 \; s3 r1 _+ v1 r/ o

  69. , L$ i7 r' N( X5 M, y
  70.                         case 'asf':  P; t4 Q. S# }4 Z
  71.                         case 'asx':% n! l. t. b( P
  72.                         case 'wmv':
    7 _! y: T6 D+ p5 E) l" p) z$ R
  73.                         case 'mms':$ |8 z" B* J: }  e8 E" |) A
  74.                         case 'avi':. L8 m# \  L& p/ z3 X
  75.                         case 'mpg':
    ( b( r7 a1 }9 T% Y. [
  76.                         case 'mpeg':7 p$ B  ~7 v. `1 B" S
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ' F; s8 l7 \# i3 O8 q  w% ~0 ?
  78. ( L6 r2 i; V) P; K% r# _
  79.                         case 'mov':( q1 H1 B1 i4 W! Y1 u7 W
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';! ?4 T; N+ b$ N7 D* h  S
  81. . m2 w: r' Z: C7 n
  82.                         default:
    ( A0 k& C9 Y, c) K
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    9 i% C. R+ K$ m8 O7 A
  84.                 }  d/ x2 t3 T, ?( F& e! B- ?! @
  85.         }1 f, H4 _+ v/ c9 }7 t5 b
  86.         return;
      h# b% C4 W/ p( L
  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) {
    9 Q' t, L4 M" b& p2 j2 A- Q3 X' G. C
  2.         $w = !$w ? 550 : $w;
    . r5 ^: h1 t' m& ?& s
  3.         $h = !$h ? 400 : $h;. T  F0 M9 J, t
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);4 {' c1 I7 X; u; E" N$ |
  5.         $url = $matches[0];0 U9 C* T! x; ~  J; O! N1 p
  6.         $randomid = 'swf_'.random(3);
    2 o% e- w4 s' P4 {% B! y
  7.         if(fileext($url) != 'flv') {# E' }1 o8 {$ U6 f
  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>';
    8 U; O$ u6 c1 O( E& X5 w% e
  9.         } else {
    3 v8 }, J  o4 r7 L2 z1 B- C
  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>';9 b& y  \3 {7 p
  11.         }
    6 X+ G$ P3 `" _: V1 g
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
    ; W4 d" U2 E) J0 C/ f
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';' n7 V+ x) ^4 C3 g" }( e. e
  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-22 02:15 , Processed in 0.032202 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部