【高州情】高州人深圳站

 找回密码
 立即加入
查看: 382|回复: 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身上,' z: g6 S  E7 J( [+ O$ m, k
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,
, U; q4 C0 R# W( X) A虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
) T9 ]/ l! h% S
- ~* k, H' c2 ~; @6 J) a

5 J3 p# K# k9 ^  e$ S$ @
: ~' v0 j  P/ E6 \
+ s" ]) r# L7 T4 V4 Z) t9 c6 _
Discuz X2 HTML5 头像插件 v1.0  2026-05-05& n) Q+ e$ x! o) q6 Q# t' {$ h
==============================
* L6 U( s6 ]: k! ^0 w: [2 |+ x, C& a【目录结构】
& [; ?8 H/ k0 o* t" g6 `; kupload/5 d7 _( S+ T0 G
├── html5avatar.php        插件后端接口(核心逻辑)
# i2 c- E4 e! u* f└── template/, _8 `# E5 D9 d0 g, o* `8 E
        └─ default/" P; c  `$ z8 n" P' [% C- X$ c
            └─ home/
" K$ L; r! r# ^# _7 |                └─ spacecp_avatar.htm        前端模板(含 Cropper.js); H: e# q7 Y+ ?

, C1 ]( f, M$ K9 U2 X' e【适用环境】
, B  j+ W9 E' H- Discuz! X2 UTF-8
% I6 p# Q! w1 ~0 \! ]8 Z2 g- UCenter 1.6
( l" U' x$ {; A- PHP 5.6+  A$ t. B3 y. f9 h( {

3 d" [9 z4 t" L. ~- V【安装方法】
2 ~7 O: w2 l  V! b5 w1 t1. 将 upload 目录下的文件,按路径覆盖到你网站根目录% M1 a( Z9 s. P; _4 b& B5 G4 C0 w
3 d4 ~5 g1 Z' X, {; }) B
2. 特别注意:
6 u$ O0 {+ a* s% {5 p" P3 g   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm
; z, E9 B% a4 m   (如果你使用了其它模板,请自行替换文件标注部分代码。)
4 r& W6 }" O, I) y  b" e
# S. f9 l: w: G9 J3. 确保目录权限:
* X! b3 p) V# V3 u6 J2 T& X   chmod -R 755 uc_server/data/avatar
& G; c9 I1 [$ Z% j! v+ `+ P
8 x0 f, G  d" }7 V+ T) n4. 进入:
9 A. \) R: H' `! M4 L$ E/ A   点头像进入 →个人空间 → 编辑头像
6 o8 t) s% |. K* K  ?3 Q# e9 x   即可使用 HTML5 上传6 n, k. x% y/ i" B# j

9 r8 n6 x- q& c$ X" D' C【说明】
% v+ Y- {/ z7 V; l& A3 @2 u- 会直接替换 Flash 头像入口' _6 F( l- t8 Z
- 无需安装、无需后台开启) c8 A5 f6 y$ K- v/ Y
- 不影响 UCenter 原有逻辑; N# d0 k* P0 Z  A+ h
- 保留头像简单裁剪功能(Cropper.js)
) ~4 K0 K& }* L- 仅新增一个htnl5上传组件

5 o1 Z1 g$ q; }; }; D5 w/ h  b
) s9 O2 ?5 a6 }& i+ ?# x4 T! w
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {
    + @/ x# E8 T% x
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    / ~9 K% [3 `6 }! i; Y1 B: W
  3.         switch($ext) {
    ( h( s7 `# I) d: T
  4.                 case 'mp3':
    8 j6 N  v- Y, y
  5.                 case 'wma':$ Q/ g% `  y/ C
  6.                 case 'mid':" v5 b7 Y4 x7 ^: ^  J
  7.                 case 'wav':" ^, ?  b5 o8 b" t8 x1 l
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';' [9 J+ J0 p/ H: v+ C# k8 c
  9.                 case 'ra':
    3 R8 a  k$ O9 k0 J, |% v: L5 v
  10.                 case 'rm':
    9 }4 f  S* I& x  V$ g: k$ s; E
  11.                 case 'ram':* b( _# V' ?4 t8 w2 B0 q/ B
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    / R! D( \* w( i: R9 V) V& q
  13.         }
    ( }, A6 U! l& {% t
  14. }
    2 y1 p! K- |' t

  15. 9 n7 g. @* m; L5 O
  16. function parsemedia($params, $url) {
    ) i1 {! ^0 J0 \7 g2 d/ [
  17.         ...
    5 `$ b  u* V" H' T2 a5 Q4 W5 C
  18.         return parseaudio($url, $width);/ Q9 e# M; z; R7 D2 f) ]* P; s' J
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    , i/ l9 q- h0 T7 ]" H
  2. function parseaudio($url, $width = 400) {
    , ^) N( J. n% P6 o! L. X/ }7 b: S
  3.         $url = str_replace('\\"', '"', $url);
    " q& |; T, N6 Z- f1 Z% ]* r) W
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    8 j' e. j+ V2 \
  5. 9 y- @, |7 ?& N+ S" v, H
  6.         switch($ext) {  x( f1 _1 c! i" f) e7 F' I
  7.                 case 'mp3':
    : `( S/ U- a1 K# n
  8.                 case 'wma':
    - {- ~. h" @" ]  e. u
  9.                 case 'wav':
    $ B2 m& `; F- l5 S! e  s! \
  10.                 case 'mid':
    0 m5 Y, j( j) q
  11.                 case 'ogg':3 d# a1 C  @# t, _3 P4 V
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    & |% c* _8 H; [1 Y7 n
  13.                 case 'ra':4 Z, Z- t# a! e7 @- e
  14.                 case 'rm':
    ) W0 V( l4 I( [# M
  15.                 case 'ram':3 [4 T( T/ {2 E& n
  16.                         // RM 无法 HTML5 播放,退化为链接4 K  X; C; }" [7 \* ]
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';. z" j9 F5 K1 h# I" g
  18.         }, I1 B) N: q% {3 e  u7 K
  19. }5 X; o2 A+ i, ?# b  h- u0 Y
  20. ) v6 L! P) G. M$ L1 G* c- ]( q  `
  21. function parsemedia($params, $url) {8 o# s4 Z8 U3 M4 p' P- w$ s
  22. ' |' G+ O3 D3 p
  23.         $params = explode(',', $params);) Y: D* L+ n8 Y6 {

  24. / t3 @9 |" o# ~# _6 C* f/ m
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;
    / v" P, J$ O! g3 n6 h
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;! Z( I$ P: l$ F

  27. % T% U& P! W0 c
  28.         $width  = min($width, 800);4 `$ X- c8 V, h/ h. {: b( D8 D
  29.         $height = min($height, 600);
    / H, d# l8 p7 V5 R

  30. " Y" V' I( ^& t6 U* b2 y
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));" q) m) x; V! f; X% u' P$ q1 j/ X
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));& i% z) ?: w: K' @- W0 h
  33. ; m5 M6 ^$ ~2 o
  34.         /* HTML5 优先(现代浏览器) */
    , f7 K5 a" C6 O. d
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    3 h7 ^4 R- y) e: J
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">3 |- P( }  P. X1 V2 ~
  37.                                         <source src="'.$url.'" type="audio/mpeg">
    8 L8 k1 ^( p% v) e4 D- S( m: O
  38.                                 </audio>';
    : O8 N3 ~5 \' W) q5 J* p
  39.         }
    1 N8 t$ w; b8 z

  40. # s& a# Z* a5 |( ]* M8 g8 n+ R
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {. k- v" T7 L, C3 @7 ^* {8 `# m
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"/ f: X. R  N8 H
  43.                                          poster="">
    + z+ @* I! d- b8 Q# E1 W4 W
  44.                                         <source src="'.$url.'" type="video/mp4">
    & ^  B4 o' |$ H8 k3 I
  45.                                 </video>';; X: s/ z3 [  T
  46.         }( B4 V/ I# G, y# X2 j
  47. % J  g/ ?# |* D% e
  48.         /* Flash 逻辑保留(但不指望能用) */) W  {$ w8 J0 }: V- O/ L
  49.         if(in_array(count($params), array(3, 4))) {
    ! ~. C" a7 v) Y# g  I$ ?
  50.                 $type = $params[0];6 V3 `% ?. l  v9 r# ?- Q; E

  51. 3 [5 @' T! |% D/ ]  U, ~- U! s
  52.                 switch($type) {
    . m, A1 R( W2 d1 g, T' B. C
  53.                         case 'mp3':
    , @7 N& J" Q/ S% ^7 f" e" H0 u
  54.                         case 'wma':
    4 u& ^/ ]$ m6 K) ^- U
  55.                         case 'ra':
      n7 v# h+ k/ o* L, D) x5 b  K
  56.                         case 'ram':# @# z6 X% D$ J2 U0 T+ n
  57.                         case 'wav':$ d* [7 y( k, s
  58.                         case 'mid':
    1 U( x" P% ]) i8 a' {4 K
  59.                                 return parseaudio($url, $width);
    - ]8 n% t" I# W, b7 h
  60. - L. ]4 b' ^5 v$ W  `( u
  61.                         case 'rm':+ o. f% Y$ E: A" {* I1 `
  62.                         case 'rmvb':
    ! A# e# h% x% n7 f- ~
  63.                         case 'rtsp':
    : a4 O6 Y3 c6 c! `, o7 k- q
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';8 Q0 E) U7 D6 }

  65. # [2 o9 k% O7 n7 v/ c
  66.                         case 'flv':
    7 H5 N  x$ V" M: d
  67.                         case 'swf':
    5 Q$ \# f2 ~/ [& h" q
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';* l' i/ t) W7 Y1 D7 z: B
  69. : o/ D3 f3 @8 M( F+ k9 l1 p
  70.                         case 'asf':
    ! R; O/ K  a5 ^9 Z% U+ q( f; D
  71.                         case 'asx':
    $ M9 v6 w$ X! ^" q2 o4 j% y
  72.                         case 'wmv':
    3 x9 ?/ ]; L6 T9 `
  73.                         case 'mms':
    " M+ q8 l! n( l( ]1 R# E1 q  ~0 F- K
  74.                         case 'avi':
    / K0 q% `. w1 \. l- P. J
  75.                         case 'mpg':5 u6 l5 C7 O4 j8 E, Q% {8 O& N
  76.                         case 'mpeg':
    2 ]5 m; t  I1 L: Y3 S3 r
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ) t4 M' [; n1 ]6 Z! d5 I% T
  78. 5 k; A: `4 |6 N# w
  79.                         case 'mov':. i' V' I; Y" G7 U
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';5 J3 y" X% \* O, p3 l& V5 X; _$ Q
  81. 2 N; b- R, r5 ~
  82.                         default:4 j* u6 E' ]' R' f7 Z7 M' q$ x3 X3 _
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';" f( u! `+ M7 u: E  r6 U% S1 R
  84.                 }! {9 p6 P; R: d6 y/ y& F. f% k
  85.         }
    ; d, L% e- o9 ~* [5 U1 o
  86.         return;9 r5 Q( z* H% `- N: ?. M9 D* o
  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) {8 F  R9 n2 \' j  {# `# s. a
  2.         $w = !$w ? 550 : $w;! p7 p/ q& Q: S3 c/ {
  3.         $h = !$h ? 400 : $h;3 y  S* A# Y3 f2 Z. c& u7 C3 _
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);
    # z* |3 b; {9 {1 O/ i. y
  5.         $url = $matches[0];! |' k; n) E, T. m0 M# T+ E0 Z* u6 d
  6.         $randomid = 'swf_'.random(3);" o2 K- N+ r4 S4 L; a8 U& j
  7.         if(fileext($url) != 'flv') {
    ! J: J* e! H* a
  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>';
    & M( O5 a  C( L* Z% K
  9.         } else {$ F+ j$ T7 ?* k2 S* u) J& b9 a2 H/ ]
  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>';6 _# L$ s- j* S: w8 F
  11.         }
    , \% ?' W  G  R& j2 l* r
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {5 J. m8 W) w. f( t
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';
    , a& z, D/ C- E4 ?
  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 17:54 , Processed in 0.041680 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部