【高州情】高州人深圳站

 找回密码
 立即加入
查看: 762|回复: 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身上,# R8 x4 N" Z, v' c. N! g, Z/ m
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,- C* Q7 L2 h6 a! M; s: X& G0 m
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
& W3 p4 \0 Z1 [! \% I6 k- X/ A: R+ r

/ p0 ^( K9 S. i7 P  S( ?8 F
& K( j+ z2 ]9 K7 g

* p6 R5 x% C: c) u# \6 e& ~" G- l( b+ |6 s& l; l, c8 z
Discuz X2 HTML5 头像插件 v1.0  2026-05-05) y  U5 H! S! J6 A. B3 B
==============================
) L( {' L# Q( o6 K* }0 G【目录结构】4 k8 L; [+ r$ C! V$ R
upload/
0 B# U3 x8 B% D' t├── html5avatar.php        插件后端接口(核心逻辑): Y' H" t% Q0 F" D
└── template/7 |, P5 J1 C# X' {. q3 h0 X% Q
        └─ default/
! h7 {2 ^! t0 q. \            └─ home/
8 g/ k3 b$ j6 E/ j# u                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)% h0 {" z# M8 ~, J. ]
& o+ n! i! B. w6 E
【适用环境】! d0 p: H: d" v; s4 F0 i9 k! T6 r4 _
- Discuz! X2 UTF-8
$ R( v  s! q- t- UCenter 1.6
- V# x8 j2 `( _) [& Q0 ^- PHP 5.6+3 N* V; J6 R" u: ]) o

2 f9 o- J8 Y' r/ L4 A. |【安装方法】4 @2 P  w' Y9 D; I* q) D
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录1 |# {1 z! w' ~/ a0 U

" c$ U$ C( `& W2. 特别注意:* t5 N: M- R1 _' n7 B9 ]5 _
   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm
1 W: M# g, ~' x" M6 e/ E! j/ D   (如果你使用了其它模板,请自行替换文件标注部分代码。)
0 N( g; m* l3 _) X0 T& r# Y' W
3. 确保目录权限:
0 T& ?1 v8 W, P' Q! H3 b   chmod -R 755 uc_server/data/avatar
' C' Q9 s5 [8 Q& x" q) Z- D/ J& f! J4 [; g0 u  V! J
4. 进入:
: B' w: V; I; E; W- G% X   点头像进入 →个人空间 → 编辑头像
, D8 a: D+ x. s* s$ C   即可使用 HTML5 上传
5 K. B& k6 y3 X3 c% }; @: f7 k3 o7 M0 g  e) V2 M- F, g
【说明】
$ u: E( r5 C" Q9 @- 会直接替换 Flash 头像入口
9 }7 b' e& {# s- 无需安装、无需后台开启6 S4 w5 |7 {- n/ R' b  I
- 不影响 UCenter 原有逻辑
, `* F- V3 E% L1 j- 保留头像简单裁剪功能(Cropper.js). D( o2 T7 t- i" D
- 仅新增一个htnl5上传组件

7 k+ [  M1 p% ?
$ [4 p. }; |% [$ {
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

Rank: 12Rank: 12Rank: 12Rank: 12

金币
7319
贡献
615
威望
9151
最后登录
2026-10-4
帖子
1876
积分
25897
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

金币
7319
贡献
615
威望
9151
最后登录
2026-10-4
帖子
1876
积分
25897
UID
10

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

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

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

原多媒体控件:
  1. function parseaudio($url, $width = 400) {8 R$ G" a/ I: v8 M4 ^8 b$ A, b& V) k* e
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    ) i4 O$ D+ l3 N' l% \( X5 j& v
  3.         switch($ext) {
    % [* J1 }$ J3 K3 |! Y- B
  4.                 case 'mp3':
    - v' f. E( w. ?. x& c1 {
  5.                 case 'wma':
    3 n4 P' R( M) }/ I. C' S0 b
  6.                 case 'mid':0 [; [% i! n$ E3 v: B
  7.                 case 'wav':
    % b3 E5 T- U, q$ P( ^0 u
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    1 ?, u# \3 r6 a# n1 o
  9.                 case 'ra':
    ( h8 a1 U4 h6 x. c& \
  10.                 case 'rm':( k# V: w- |5 h6 @6 O5 c
  11.                 case 'ram':
    / e. |1 t- K7 Y" O1 a
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';0 ]$ I; ~; V3 w% y; i. o
  13.         }
    % d4 P( p4 H  n3 K1 D
  14. }
    ' j: |- I1 g0 Z! k" F$ ~

  15. : M. ?+ \; V3 T$ |5 T( v" g$ I8 X
  16. function parsemedia($params, $url) {' |) P: j0 q3 \# u
  17.         ...' {' f$ S- H9 P' k
  18.         return parseaudio($url, $width);0 M# e' \7 _  {1 U; A9 y- A( {
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    9 c1 X4 W0 i; Y! E+ \! Q) D
  2. function parseaudio($url, $width = 400) {
    + {; ~3 }: u' }$ K4 E. ^8 A
  3.         $url = str_replace('\\"', '"', $url);
    % m/ d4 p. n: Q
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    ; E4 Y6 x2 [* C; r6 t8 l9 y2 K
  5. ; k0 F7 T: D- V/ f9 u
  6.         switch($ext) {
    5 T  x. r! s: c! d- u8 Y
  7.                 case 'mp3':
    8 C* X5 a: H* ]' W7 E1 Q
  8.                 case 'wma':, V9 M, N. S, E: ]. z- f
  9.                 case 'wav':- h! S+ z. h% q# k! A
  10.                 case 'mid':# b7 ~& o8 A+ @' M/ y
  11.                 case 'ogg':! Q4 R& ]2 F+ o% m6 l9 L: ?
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';' }2 I% L  c- r! X0 q$ G. ~
  13.                 case 'ra':
    1 C% M$ Q3 O7 D# p* ?2 h( D
  14.                 case 'rm':
    5 E4 a7 O- J; v0 p5 y, S: L
  15.                 case 'ram':
    # m' L  g5 _  W* s. `$ M. h
  16.                         // RM 无法 HTML5 播放,退化为链接9 a7 N2 z5 n8 r
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';% I% G; W! c9 r+ c# v- K2 n1 B8 P0 x
  18.         }" B9 W; s1 g' ?$ ?% P
  19. }
    8 R. ?' S. ]" ]4 K/ s9 H

  20. + u8 o+ J4 S* N- D8 Z
  21. function parsemedia($params, $url) {
    : T' _7 \" N; A* U* c

  22. : K6 D( _5 h. p4 P/ m
  23.         $params = explode(',', $params);
    & [+ z. N) E! K7 q' }+ [
  24. . r0 D2 f" c0 A9 a. P
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;2 K2 Q- ^+ V- O( @' B6 z, M
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;
    1 X. Q( a9 [+ m! R$ Z

  27. / \- F. M8 m# J! W! X
  28.         $width  = min($width, 800);
    ! Y' L) a/ u+ Y
  29.         $height = min($height, 600);
    ) E3 l" I* a2 c# i' O3 ]
  30. 3 }( g' u& n2 I5 C. a8 J
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    6 u: J7 l8 Y, E
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    % L% W2 B4 p# s  M- Y2 R

  33. 9 Z$ F! v  _# D. Y
  34.         /* HTML5 优先(现代浏览器) */3 B8 ?: z2 J7 I+ B% e- @
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    6 A7 [- M, x4 @3 \% u/ w
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">
    8 Y0 ?2 G* d9 O' e
  37.                                         <source src="'.$url.'" type="audio/mpeg">
    , s9 R+ u5 K+ L4 O! G  {" y
  38.                                 </audio>';
    - M' n) l8 D& p5 O( M
  39.         }2 K! _; D3 j% l3 F

  40. " m% v, @# r( {$ b0 c
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
    ! A5 ~6 Z( R" G- F" p9 l: t( S
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"; A1 V5 u7 [* l
  43.                                          poster="">
    + P; d2 e* e8 g7 t
  44.                                         <source src="'.$url.'" type="video/mp4">4 w$ ?8 x: @# r1 U) `$ M- f; K
  45.                                 </video>';1 M' W, i) `6 m' M; _. S, ^
  46.         }
      u9 @8 h8 U" Q- o2 j6 u
  47. 7 @! V6 C7 \/ _+ A: q4 [) B
  48.         /* Flash 逻辑保留(但不指望能用) *// F1 J/ Q7 |* G- a
  49.         if(in_array(count($params), array(3, 4))) {
    & _) m9 |5 t* g; |' ~
  50.                 $type = $params[0];
    + E* f: X! ~9 ^- M7 \! |7 h

  51. " G! c; ]& M; s2 ?
  52.                 switch($type) {
    , Z4 g4 d# o( f7 ?5 K  D: {
  53.                         case 'mp3':! |/ ~2 m. D4 Z5 z
  54.                         case 'wma':# z$ U. D) i9 |6 V# F
  55.                         case 'ra':& v3 n8 w( i6 p) p0 q
  56.                         case 'ram':9 o- q4 r1 D# z) A. T0 T2 Q. j5 ^
  57.                         case 'wav':3 _2 z4 Q3 Z# n/ Z
  58.                         case 'mid':9 k  Y6 F6 }7 q' b% V8 i. h- x! O* V  G
  59.                                 return parseaudio($url, $width);
    ( {" A3 o7 q) G, T
  60. ( C) X+ U  [3 [% N2 f3 b
  61.                         case 'rm':% v1 [$ O# K) \/ i! @9 ]
  62.                         case 'rmvb':8 @; ~: n! `1 Q
  63.                         case 'rtsp':
    0 q; d& i; r6 ~; l3 F0 l# ]( ^& q
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';. u( V. H( Z" q$ J' c

  65. 9 E' t) }. T) m9 q- o6 k
  66.                         case 'flv':
    ) l9 p& n# K; j( K* u+ V8 q  K
  67.                         case 'swf':
    1 i8 s& o, O! Z0 k- [; V3 a
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';3 ]  S6 g' L" \! K1 S2 d* u
  69. " S* f6 N/ r6 R1 U
  70.                         case 'asf':
    9 M! g6 d( a/ B* G) l8 d2 y, D
  71.                         case 'asx':
    3 K9 T: W* @: P" s
  72.                         case 'wmv':+ z# J7 e5 r9 j4 V+ j
  73.                         case 'mms':
    7 d* j+ Q9 V8 g+ _6 E& u
  74.                         case 'avi':
    , W! A; _) ~  j) g
  75.                         case 'mpg':: F* o3 Z1 J5 m
  76.                         case 'mpeg':$ a, L; m2 d, A' i0 w, \( E2 ]
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    * x; t! C5 y3 p$ {" c; |

  78. 6 ~; o& M4 ]8 Z) b0 @  \6 z. r
  79.                         case 'mov':. D% d- y4 q3 {9 n! d, h
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    7 c/ K: J" @6 z
  81.   }& T. g2 A% m
  82.                         default:
    0 Q2 C% ~1 V6 V/ K) B9 t2 C
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    / ]0 @8 L5 c; z. u+ t+ q
  84.                 }# J( x* a3 w1 W( E
  85.         }
    ' k' D, p" j! E2 B2 l, j' X( |! W# {
  86.         return;
    . e8 }) _* h( ~. t9 J2 S5 A
  87. }
复制代码
这个世界只有10种人:一种是懂2进制的,另一种是不懂的。

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

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

管理员

论坛测试[砖]家

Rank: 12Rank: 12Rank: 12Rank: 12

金币
7319
贡献
615
威望
9151
最后登录
2026-10-4
帖子
1876
积分
25897
UID
10

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

5楼
发表于 2026-5-18 11:03:28 |只看该作者
原FLASH已死:
  1. function parseflash($w, $h, $url) {
    9 Y' c9 w# L! M0 V- a( f
  2.         $w = !$w ? 550 : $w;3 O. G) a' r& d5 i- W( V
  3.         $h = !$h ? 400 : $h;
    1 ]0 g" o# C; m5 a0 v3 |# }
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);( R4 E9 z& O, z; h
  5.         $url = $matches[0];
    . L/ j  _5 G7 \0 F% K# N* t
  6.         $randomid = 'swf_'.random(3);& h, k2 t3 Y8 {9 E) u; @
  7.         if(fileext($url) != 'flv') {
    ' ]* L) g+ E/ I
  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>';
    3 ^9 [' k7 v5 X, g1 k
  9.         } else {$ ?! D& b5 d/ `' V! E" p3 k
  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>';
      l+ R2 F' H. A; e3 ~& ~' D
  11.         }' Q7 G, l0 Y; M! R
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
    1 C: i( m6 j" i$ ^) p% G
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';
    # G+ C" Q+ m0 r% u
  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-11-6 22:35 , Processed in 0.030839 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部