【高州情】高州人深圳站

 找回密码
 立即加入
查看: 373|回复: 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身上,' |/ M/ ~  j, {9 X: I
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,
$ m" ]+ L% U# u7 I虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。

% Z7 m5 y! |& ^
* z6 t" u9 z+ d
' q$ K3 N- i# ^( s; Y: `
  u6 A& l+ o( o0 L7 g+ R+ ^
! z% y! r, l' i5 M
Discuz X2 HTML5 头像插件 v1.0  2026-05-054 r5 \- [6 A7 F1 [0 |
==============================; G* D, T$ M$ Y1 e. Q% k
【目录结构】
/ X6 p' _1 c( {4 U( l( N5 B0 u/ S/ ]upload/
/ v6 K/ Y, {! U- }1 _5 w6 ^├── html5avatar.php        插件后端接口(核心逻辑)
/ N! b3 g8 b; B$ T6 F) B1 `└── template/9 T4 p% r% a1 R& ^6 _4 [
        └─ default/: J0 q) H0 _! A/ ~" C: Z
            └─ home/
$ @6 T& B( }: V. `& |& F$ I/ v                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)! w! d% s, B: C( V" y8 v9 j; g

4 ]1 A! k& {2 J+ B9 h1 C. u【适用环境】6 @: I" v7 [- ~% a
- Discuz! X2 UTF-8$ O& K3 C7 J7 Q/ l/ P; x4 w" U# o
- UCenter 1.6
, B% {, Y' d0 M0 [- PHP 5.6+$ Z, Q$ e, R8 X0 X. A9 B; I4 C

- m+ z0 h! P% ~2 N【安装方法】+ q" G* z$ w- \$ O
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录$ A" ?; [) f1 A; W

! {5 c( _) O# L: t1 e2. 特别注意:; J! Y4 N5 z7 J8 T/ m1 `
   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm; [7 n* m( @, p* t
   (如果你使用了其它模板,请自行替换文件标注部分代码。)
1 e% N+ N4 v* g$ n7 X7 |9 S5 ?( F, O' R* d: z
3. 确保目录权限:/ x* j+ D! P* h, y* y* {
   chmod -R 755 uc_server/data/avatar
6 [, ~! h' A# x0 c1 f5 a; N5 z" U& Y& P/ O) s4 p! x) w
4. 进入:
8 ^% h# y/ C9 {) ?   点头像进入 →个人空间 → 编辑头像
2 O) F5 h8 k. E! ?8 \   即可使用 HTML5 上传" \% \! X1 O) L5 A3 z; h& v

& o# S' h2 N/ K8 W1 Q【说明】4 T* Y1 n* ^0 M( o" x1 R  q
- 会直接替换 Flash 头像入口
  w! D0 N' ^' j7 |# R, Y$ u- 无需安装、无需后台开启
( @. ]% t, j- R8 m! G( U- 不影响 UCenter 原有逻辑
. |' Z" Q# h& P4 a. b- 保留头像简单裁剪功能(Cropper.js)3 p- q: A; r0 w0 b  ^- W/ n
- 仅新增一个htnl5上传组件
4 P! r. p6 o- V( ~7 w. i& b

# j" b% `  b) P2 @
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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

管理员

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

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

4
发表于 2026-5-18 10:25:41 |只看该作者

修复多媒体控件:把原来多媒体的FLASH控件替换为HTML5原生多媒体控件

原多媒体控件:
  1. function parseaudio($url, $width = 400) {
    ) u1 n# G9 i& f% t9 T$ F$ q
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    ! G3 G& ~" g: L2 _+ v6 p0 b
  3.         switch($ext) {- v* j4 E; _  n/ X: v4 A
  4.                 case 'mp3':
    / ~: e4 R% V1 q& Z5 l
  5.                 case 'wma':
    * C' z. X  ?8 S' h* V  C* m) E
  6.                 case 'mid':- M) \" o& O: r/ {1 N& K! s/ k
  7.                 case 'wav':  z, X7 T4 q- U6 C- G
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    % B" o. W1 C/ F+ I
  9.                 case 'ra':/ O- T$ B" l: O
  10.                 case 'rm':
    - b# j+ }5 q! P' u( U. V
  11.                 case 'ram':
    * x4 u  ~, [2 s2 A! C
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    9 G- B7 F! ^4 N) O; A* v* G  K* c* E$ B! g
  13.         }
    9 Q: Q1 a/ l' S% l: X) L/ t* T
  14. }
    # N8 n/ Z  c8 G1 r% {( |4 p

  15. " {  ]3 P0 a, @1 A* m
  16. function parsemedia($params, $url) {( T) t) V- H( D/ ~+ {. `. F, }/ h7 H1 F
  17.         .... p/ B% \& f! t' V5 T* u
  18.         return parseaudio($url, $width);
    ( A$ B! z- ?5 V  o0 N2 W
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件# r; k% m4 X" F
  2. function parseaudio($url, $width = 400) {; [) V7 [& |& s4 z: t  P) A5 ^4 l
  3.         $url = str_replace('\\"', '"', $url);3 ~0 e/ ]5 m7 _
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    & X& m; Y9 U4 y+ p
  5. 8 ]* B# n3 f( h
  6.         switch($ext) {- n5 H& B/ ^  `' t) x
  7.                 case 'mp3':. a+ x" W8 P' }2 Y$ m, l9 a
  8.                 case 'wma':9 Z. F, M7 l2 c8 V
  9.                 case 'wav':2 y  P% A# U3 @: E9 i
  10.                 case 'mid':
    9 Q' F/ M% V9 ?  k- k1 m4 D
  11.                 case 'ogg':
    ; @( R% T, x) _* X
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';( `1 J( v0 t3 {
  13.                 case 'ra':9 \' J8 `# R; i
  14.                 case 'rm':
    ( I1 t- H  Z1 a6 S( X9 ?
  15.                 case 'ram':
    ! T! M+ Z& O) ]2 h; B
  16.                         // RM 无法 HTML5 播放,退化为链接
    2 N) m5 g# h* u( R
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    / o2 _+ g( w8 L' Q* i, q8 j
  18.         }( X3 l7 L' n6 Y" C1 h4 H. Z' z
  19. }
    % G+ R2 i0 I) s$ H

  20. 9 q& B& V6 ]0 J! H: F6 m- K8 f5 T
  21. function parsemedia($params, $url) {( u* q+ J1 L* U; B% e- \0 H8 l
  22. & h1 f% U! L+ I/ g, L4 _6 }( I
  23.         $params = explode(',', $params);
    ' S% N. `* U0 e8 v1 h
  24. 1 C/ d, `0 T) Z- H; Q
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;
    7 j6 I* c3 K6 G, Y; U
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;
    4 w8 O" i) b) w3 J$ x
  27. % I4 _: q- E. I  t3 [* L" M* ~: {
  28.         $width  = min($width, 800);( \' y+ h3 j( q6 a, ^4 x$ f6 g; B
  29.         $height = min($height, 600);. u  D4 M  I& t, |
  30. : o, j+ s( \5 b" r, m3 d; f) u
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    2 M# R/ {" W4 K# S
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));1 ~  d0 l' ~8 p
  33. 6 U" I) R& A9 V" k" j0 d$ P" v
  34.         /* HTML5 优先(现代浏览器) */
    ' G2 P4 Y5 I4 Y& H& a/ ~9 y
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    3 L8 b$ \7 ]' \3 n2 F% w7 }
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">
    ( n2 Z9 ]' B1 g' }6 h5 [" |
  37.                                         <source src="'.$url.'" type="audio/mpeg">
    " l( E* |- X, n+ d' Y; x5 U, [
  38.                                 </audio>';
    ! M+ Y; T* A9 h2 R1 E
  39.         }( e' Q4 D. y% M6 g1 o3 e
  40. , b1 Z" `% U# g! v- J
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {7 i' r* X5 a; d2 u8 l7 u4 Z) \8 J0 n4 `
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"3 [' A. Z. X2 t: o" a
  43.                                          poster="">
    - u/ J5 X1 Y  v2 n
  44.                                         <source src="'.$url.'" type="video/mp4">
    0 W2 d& ?" r- ~5 G7 k
  45.                                 </video>';
    9 N8 E7 \. l+ r5 \6 j; `4 Q6 R4 A
  46.         }8 ~; i" F  ~/ V! N, L! |) |+ O: n) B

  47. ; a. |  l# r3 E7 s2 k. V  P& t
  48.         /* Flash 逻辑保留(但不指望能用) */
    5 F6 e% U2 j4 c- \/ d; y
  49.         if(in_array(count($params), array(3, 4))) {4 U. `, r; E9 \$ V. N* ]. N
  50.                 $type = $params[0];  _9 ]  }! c5 t# [5 J; V7 _  T# l
  51.   `  R. e- j& ]% Q' O2 k
  52.                 switch($type) {4 h* ?+ H+ @9 i$ }( ^
  53.                         case 'mp3':
    5 l) p! @( \2 \
  54.                         case 'wma':( W: `* `* t1 L: X  n& D3 H
  55.                         case 'ra':, u' D. A# G5 w0 _
  56.                         case 'ram':  j, b8 r  e; M1 j* Z( D2 S
  57.                         case 'wav':/ ~/ d# M/ E; O( B7 O4 [9 W; L
  58.                         case 'mid':3 g+ b- b; e& F  @& G# E1 ?
  59.                                 return parseaudio($url, $width);( a, {+ m3 V' z* Y$ @) x3 h3 \. S1 P2 M
  60. 3 B* v& g3 n, g2 G& h( _
  61.                         case 'rm':
    / r! S: c6 U% R+ L7 z. o
  62.                         case 'rmvb':
    : i' w$ g* o' O& _
  63.                         case 'rtsp':* W; A# g3 d9 u2 f
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    3 m. A/ D: K# y! Q9 q% R
  65. / J# w: f( ~* N7 J+ ^4 e8 c$ v
  66.                         case 'flv':
    - B9 Y5 N" ^8 ^% C/ _! Q% v5 }# ?
  67.                         case 'swf':* h  U, e/ W6 e/ N. }/ v
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    " C9 _4 F1 k3 ], B: w1 d
  69. , H% C# \  B8 ]  W% z
  70.                         case 'asf':
    9 J+ v# T) C. r  H
  71.                         case 'asx':
    2 H- }9 Z) S: w
  72.                         case 'wmv':2 \- u* ?8 S0 _- |2 \
  73.                         case 'mms':2 \2 ]( w5 j4 f! n
  74.                         case 'avi':( l; r% F& q. M2 v2 b# ?1 i
  75.                         case 'mpg':
    + B, I. D( V# L- m
  76.                         case 'mpeg':- J  V9 _# F" R$ y2 m  K. }1 G
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';8 Y+ c3 P$ a: Q. v6 ?$ f  D

  78. . z6 u; x% X( ]+ m+ C0 ^/ O
  79.                         case 'mov':
    / v' }/ L% B; W% q7 l' i# a# {
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    / c: v7 O# P/ x, A+ P: s+ ?) F

  81. + i; @0 |4 y$ l' S  J
  82.                         default:
    3 N% P) V- B  q& B* M8 Z
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';) H7 L5 p* R- h6 h
  84.                 }* h5 @0 c- M, j0 I
  85.         }( W; Y4 q* e" i, R' q8 f
  86.         return;9 I2 ]/ A1 [0 U0 v0 @, Y& h
  87. }
复制代码
这个世界只有10种人:一种是懂2进制的,另一种是不懂的。

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

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

管理员

论坛测试[砖]家

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) {. u! X) @; ~- [
  2.         $w = !$w ? 550 : $w;/ {* ]! l9 L% `, [5 U2 m
  3.         $h = !$h ? 400 : $h;3 }' L- M" N! g, G2 t
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);
    ( X8 B4 m8 Q( G6 T; }- o5 r
  5.         $url = $matches[0];
    ; @3 p3 y4 W! J6 B# U
  6.         $randomid = 'swf_'.random(3);
    $ F, M8 `, C) T* K
  7.         if(fileext($url) != 'flv') {9 ~2 [4 D9 i4 T  @, |& _  Q
  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>';/ U0 a; ?7 T5 f1 U0 R( H9 u/ n
  9.         } else {
    , D, {' e1 A  T( p8 d7 W) {7 N! t
  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>';
    % f6 o  Y; N! Q
  11.         }
    # ]! ]+ T$ C" q. @2 q- h
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {6 H* @$ F8 b5 L- {
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';
    3 i% M7 e# C& Y& i8 G
  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-7-28 13:36 , Processed in 0.028802 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部