【高州情】高州人深圳站

 找回密码
 立即加入
查看: 582|回复: 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身上,
, P- O: F/ {9 [2 m" [2 R用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,
* l  M( m" I. t1 u) n虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。

( v1 _/ h6 I* {/ q9 f  j2 R2 r/ N+ p. b0 ?8 c

" X, v3 ^) M! s0 t6 Y3 O# _* L5 S5 W" V# V9 j2 t
3 F: E! U& n: I: z& q% k
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
* }9 T/ W" {1 t0 L6 }* |5 x==============================  Z1 A- w7 K  B7 V% W9 d% ?! q
【目录结构】
" E: s+ x2 |7 S# g8 l# p$ Bupload/
: z6 W7 n; C7 K" u# q├── html5avatar.php        插件后端接口(核心逻辑)
& ^" e6 l8 M9 |$ ^; o$ i└── template/" R' h( ]/ g1 v0 u4 G8 E7 ]
        └─ default/
# O  ^9 k" v( V: B) j            └─ home/  f4 J* ~" k8 ~* g. ^- c" o
                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)
& \  A9 ^# `. k- X) M+ x2 l
2 Q% c" Y# e; J: ?【适用环境】
: m" ^# d5 X; G$ t7 f- Discuz! X2 UTF-8
! B+ [8 [+ R& J  b+ M- UCenter 1.6
- ~9 `. q2 K) Q9 h; c3 W- PHP 5.6+
3 j" [  e, a1 S: R7 d$ c# u0 o; B2 y- N
【安装方法】
3 b: t4 _/ F: c5 c/ B( G1. 将 upload 目录下的文件,按路径覆盖到你网站根目录! x: N0 Y$ O* b1 W! T' f

; D4 {8 s0 b1 {- t, d5 W: s2. 特别注意:
$ P" {* [% T9 p8 z/ F& p7 x   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm
0 E( P& Q2 u6 H0 d* ]   (如果你使用了其它模板,请自行替换文件标注部分代码。)
9 t: h  M' p7 `* a2 L
5 s" L' e' P" c' q3. 确保目录权限:& t1 C, \. b7 U9 Y% d
   chmod -R 755 uc_server/data/avatar0 O, L# E" l; D5 _$ O
9 D9 v! h; A  t+ n) k* x
4. 进入:
; n: g5 k. v  y: }5 b# j# K   点头像进入 →个人空间 → 编辑头像4 A3 v) H) W. J  Q0 A* j3 }! E4 N
   即可使用 HTML5 上传
* _0 J: G/ I6 [1 A2 B; |* X5 Y
( p; A/ Q% t" D( X0 @【说明】
, H2 g% g' C/ B- ]$ a1 V5 V# v- 会直接替换 Flash 头像入口( F. _2 K: n# G6 P% [
- 无需安装、无需后台开启- y  B* c7 f# Z, x; z' u2 j+ m
- 不影响 UCenter 原有逻辑
5 D# F& ?" u4 x, e- 保留头像简单裁剪功能(Cropper.js)
9 ^5 [' I, c+ U# l6 q2 v- 仅新增一个htnl5上传组件

3 N8 |1 G+ f8 G9 v  p9 M: f; l
% m! U0 z: C  v
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {' [$ }2 v; E4 e. g7 B
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    1 E% K2 {0 Z4 W* T
  3.         switch($ext) {
    ( W4 Q7 ~$ i2 M) D( K
  4.                 case 'mp3':# S1 B" C" K" B  _$ o& G
  5.                 case 'wma':
    2 A& B5 o  U9 L0 P+ H1 C' J
  6.                 case 'mid':
    ; Z; I( ?3 `% O6 L: n1 F
  7.                 case 'wav':. ~; A2 t- s: X/ s  c9 D- [* D9 h
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    # K% S/ S1 R3 O' ?: w
  9.                 case 'ra':
    2 R$ {1 t: k* a  D
  10.                 case 'rm':
    6 V1 t* s8 A9 W, e2 j  M* c
  11.                 case 'ram':- U2 D9 k) K! s9 @0 ^& v; D
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    + D4 J4 f5 m* o
  13.         }  ^( c  t1 q* k& d3 }7 D- V/ {
  14. }
    ( [' {, O/ `+ C4 \+ B

  15. & N5 M4 j- P& N) J
  16. function parsemedia($params, $url) {
    ; z' u5 n* Q) d$ x4 ]# y' E" ?
  17.         ...3 p# @/ B7 [) b! C
  18.         return parseaudio($url, $width);
    & U/ u6 O+ v7 N; ?! I& T; U9 M0 v' `
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    ( L/ O. V( c% r; `
  2. function parseaudio($url, $width = 400) {: W7 N6 N, z1 K
  3.         $url = str_replace('\\"', '"', $url);3 S! F% V( o2 L- M) n
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));0 q/ e0 w& V* {& g
  5. 7 {) d. `) B: x2 i% W+ i7 c  d
  6.         switch($ext) {/ p, @- t6 F0 L! h9 o! O+ \  R- p! g
  7.                 case 'mp3':' G( G9 d7 m  _" v9 r# J: I* y
  8.                 case 'wma':
    3 v) D0 s" M1 `% ]3 G/ l2 S
  9.                 case 'wav':5 g( u5 ?( |9 X" z
  10.                 case 'mid':7 ]) x: J" x- m) \, u
  11.                 case 'ogg':
    3 W% _, Z7 |/ R& G
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    ! z% L) N! ~0 z& ^8 V* |& U
  13.                 case 'ra':
    " `  c8 N! ^$ R1 L6 n3 J9 e
  14.                 case 'rm':
    % k( v( T" T. u( R, L
  15.                 case 'ram':
    + i( z! ]+ i0 O# M) d7 N
  16.                         // RM 无法 HTML5 播放,退化为链接
    5 {) m8 j5 {! \) d
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    9 f( o; x8 O& ~5 e) ]
  18.         }+ Y# @6 F6 k. ^8 o9 v
  19. }9 X7 Y! H8 @3 M! S) b2 ~" u  e

  20. 9 m# {% s& b4 e. K6 l" b
  21. function parsemedia($params, $url) {
    4 y# F' S/ q4 ^
  22. . q+ D6 U. B) _) D  V5 ]. a2 V- a
  23.         $params = explode(',', $params);. Y! y- J* g2 ^, I& w3 \

  24. 9 V/ K% `# U1 U3 k/ R9 Q. j0 K
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;
    5 W! Z+ `- m0 b5 s
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;
    + i# @  G' W0 f. m9 G2 Z" n5 @
  27. ! U# e8 }8 G  O* a' i* W1 i5 o
  28.         $width  = min($width, 800);- s7 |. l- {6 p' h& d2 `& ~7 k
  29.         $height = min($height, 600);
    3 y8 Y( y: G7 |$ F$ H- p

  30. - ?: O  Q$ ?$ t& \/ l$ ~/ h
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    + h4 d. t+ Y% ^  r1 [
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    0 |# g5 c! W% x& E# c

  33. " l" B  P- \; O  K
  34.         /* HTML5 优先(现代浏览器) *// Z: b' p$ @: j# G
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    + q+ c7 s9 ]. M! i1 P3 n/ ~
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">' S8 {3 O+ J! }3 M# S( r4 J
  37.                                         <source src="'.$url.'" type="audio/mpeg">/ u2 S2 ?/ ^% C# l2 f& k7 P7 L
  38.                                 </audio>';, H. t  q( a; O7 Q
  39.         }
    0 J3 F" w: h6 \
  40. 1 P0 V! r8 m: K5 w1 C
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
    9 t! s7 O& a* {; y; y" d
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"
    # `# z. v" k! V6 u, O+ J
  43.                                          poster="">
    ( z% K& l. b0 G7 h
  44.                                         <source src="'.$url.'" type="video/mp4">
    / h# v) v3 M! N/ r2 C7 Y* |! R
  45.                                 </video>';: E; Z8 H9 k3 c
  46.         }
    $ w1 G/ \- [( \6 U! R
  47. : c) r; `7 t0 ?7 N3 ]- `
  48.         /* Flash 逻辑保留(但不指望能用) */: p- r$ Y* {2 L8 A) w
  49.         if(in_array(count($params), array(3, 4))) {  F/ S6 v5 Q7 n% o4 W3 A: R: ]
  50.                 $type = $params[0];
    % f' A; O' N9 M1 U* G9 m, u8 K! O5 p
  51. $ A9 |- T2 y/ M* C- V8 K- {
  52.                 switch($type) {
    , o3 r) d4 |7 g2 x! b
  53.                         case 'mp3':/ S3 G  H* ?: R& f
  54.                         case 'wma':2 j( r, h. J* @# @2 t& S
  55.                         case 'ra':
    6 U: }! w: y8 a$ u4 ~
  56.                         case 'ram':
    ! W5 n+ e) }; S, a6 M% d
  57.                         case 'wav':
    * W  Y! d& p$ E, X) p. ?+ V
  58.                         case 'mid':
    5 ^9 i+ z9 i; j
  59.                                 return parseaudio($url, $width);
    " D0 j  J: _" s

  60. ) n- V( e! ]- U7 N/ h- ]
  61.                         case 'rm':0 A8 y1 v8 q2 H9 x: V
  62.                         case 'rmvb':
    # Z6 C# c" t# g' S# q. H0 {/ Q- v
  63.                         case 'rtsp':% g( e! e3 H3 S# v# @9 r
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';) Y: M0 N3 _( v1 l  O8 C
  65. 3 b# h  O4 n2 S5 f3 m* B" s" n
  66.                         case 'flv':
    7 Y- R& C  |$ [
  67.                         case 'swf':
    & R9 X+ }0 [, L' f  a
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';" z( h2 N0 {. V( b" }* J5 f

  69. ) f6 j0 \( \* t2 C! r: w3 E
  70.                         case 'asf':) @3 o/ b7 F! _! ~: t8 F* A
  71.                         case 'asx':4 ?, I0 y& U3 F; w- ?- X
  72.                         case 'wmv':
    9 T% ~" ]) u* a% P
  73.                         case 'mms':
    0 K# J; h$ {/ K
  74.                         case 'avi':
    6 Q; h7 Z- O$ j8 C/ M
  75.                         case 'mpg':) u( M& c$ C& `4 h  j7 |; Z& D
  76.                         case 'mpeg':& j: p3 Z; \2 Z% A5 X3 Y
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    , x# g# q6 j& `& t8 b' Q

  78. 8 W$ j3 Y/ p, {5 A: N
  79.                         case 'mov':
    1 O, J) c! R% v
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    6 z- _  B7 ~  k- z6 T# t
  81. 3 Q1 V; ]# Z: B# w, S6 m
  82.                         default:
    , l- |/ w' O8 U
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';, w9 |% q7 W. R7 @$ {
  84.                 }
    % o/ G# b  p# X" X
  85.         }- @. H) v- u! @* C2 v
  86.         return;
    3 y: K2 s* @7 q" N9 \* M4 V
  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) {
    ( B7 [1 n: a% z7 i0 F0 I8 F
  2.         $w = !$w ? 550 : $w;
      V) E3 I1 [+ u5 v" H
  3.         $h = !$h ? 400 : $h;
    6 K# Q9 ~. z' Q; y, A. y" E% X
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);
    ) t8 p5 E4 q, J
  5.         $url = $matches[0];- w) I8 b- t/ k: v: {
  6.         $randomid = 'swf_'.random(3);* W$ r- M8 t+ Q% G. ]7 _8 V! \6 }( o4 f
  7.         if(fileext($url) != 'flv') {  z3 p: k& F6 V
  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>';
    4 v4 G  i* A8 P: k
  9.         } else {
    ( i. O- b3 `! S
  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>';# P$ D3 [( c- c' y9 t& j
  11.         }
    7 k; N4 _. u2 i' ?9 m" l
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {* B* V# W* z( k2 g
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';
    4 H7 c5 w/ ]" w% `8 l
  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 03:47 , Processed in 0.031142 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部