【高州情】高州人深圳站

 找回密码
 立即加入
查看: 760|回复: 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身上,( D/ u. r/ Y5 a0 q3 @1 m3 v
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,: ?3 S/ V# B2 w) m
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。

, M- l5 N& _3 Y! Y; R2 U( R* d% s& u/ ~
5 b, Q0 S( J- i
# A9 d2 Q" ~7 v: U4 r/ n# ?, g' [" _
% [9 N" b! O3 k; Z' u; @1 W
Discuz X2 HTML5 头像插件 v1.0  2026-05-05- k& u/ f) k, Y! `
==============================$ j( O9 W3 ^1 G/ t7 K& t% ?0 P% b
【目录结构】$ t: o7 z) Y# R- y! @
upload/* [& c5 N8 E" h# P
├── html5avatar.php        插件后端接口(核心逻辑)8 H) d# s3 K9 U4 y! x
└── template/
5 B8 E' }3 U) {3 V7 Z" x7 ?- c6 Q        └─ default/3 l5 r; R9 r! a
            └─ home/( g; [5 H' d" p3 m6 j9 ?3 a
                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)7 I) l0 a& h' [) g8 J$ q! V- [
9 B/ Z& p5 e# G: F9 g& f
【适用环境】
  ~  g  K2 A+ \6 ^+ X& u! W( i- Discuz! X2 UTF-8' X, y! S9 W9 H. B4 c3 g8 \5 ?
- UCenter 1.6- y% Q4 G0 ?. {) S2 h
- PHP 5.6+: T; }+ C2 _$ a3 K0 p) v: S6 n
# @+ a8 [& A9 R# N5 I& F9 m
【安装方法】
7 h! z% K- A' W% J8 u7 k1. 将 upload 目录下的文件,按路径覆盖到你网站根目录
0 g; b% e. i4 n, Y! s% L9 O8 b
4 ]( L/ O- w1 I2. 特别注意:" }! F' R" P( S- z8 e/ ^4 P& X
   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm% C4 e+ z' o& |
   (如果你使用了其它模板,请自行替换文件标注部分代码。)
* c# `/ ?  g3 J6 N0 ]3 b$ z% @7 m( g8 Y, W8 ~/ M
3. 确保目录权限:6 l  r9 R8 W8 i$ X
   chmod -R 755 uc_server/data/avatar; ^6 T5 u" A. e+ D% x4 G

+ [  D: ~4 n- i& Q" a4. 进入:9 ^$ M8 t  I+ l* a- v
   点头像进入 →个人空间 → 编辑头像/ k. Q- M+ O% Y9 ~
   即可使用 HTML5 上传6 I3 Q' M, d- P, u  G7 R
2 f+ @+ [: v1 x( ?
【说明】( a9 d/ T5 [7 x: h/ Y4 e! _8 a( V
- 会直接替换 Flash 头像入口3 M( k8 _4 x& I( A- y4 R$ U- ^1 f
- 无需安装、无需后台开启
. g6 z2 f0 B- V- 不影响 UCenter 原有逻辑$ ]7 O2 g1 W9 E6 Y: H: b& h
- 保留头像简单裁剪功能(Cropper.js)
1 |9 o9 J2 j6 F% \1 @, [) w8 }- 仅新增一个htnl5上传组件

9 N; `& X8 F- K3 O4 B9 {# e4 d; \- N; `. S
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {
    ( P- y1 M; Z, |
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));0 [4 r8 ~" ~0 E' S% a9 _
  3.         switch($ext) {
    " W, q1 f2 b+ g5 H5 C
  4.                 case 'mp3':
    ; y" a5 p- a2 M, `: R/ V9 Q3 w
  5.                 case 'wma':1 m, M2 S2 y- Y+ o6 Y8 i  X# s
  6.                 case 'mid':
      [) b1 z. t) j$ R+ r
  7.                 case 'wav':
    " O+ v- V8 D7 q; A2 P0 a
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    ) j: v8 R) L3 r9 E, u. X
  9.                 case 'ra':
    2 p& s  r4 I7 g7 @
  10.                 case 'rm':2 A, H, \* i: g5 p
  11.                 case 'ram':9 R6 q0 t- q8 M6 Y+ l1 G  R; |
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    8 X: k, h. T$ [  u) ^1 p% ^
  13.         }% {& X! t9 `2 z8 q0 [# L- \
  14. }! h5 M% T! }+ C

  15. 7 A- u/ d1 R3 M/ ]
  16. function parsemedia($params, $url) {
    5 u, T. h7 ~% U- f8 r8 k; L
  17.         ...' X( \) O" \! ~
  18.         return parseaudio($url, $width);( J8 o* f6 O7 Q+ E( c8 l
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件* a2 L% c1 Q  g- }$ t
  2. function parseaudio($url, $width = 400) {" s+ ^( g& \. g
  3.         $url = str_replace('\\"', '"', $url);. x9 t' x1 @5 q9 L% U8 w
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    2 ^& [: Z& h4 C  H6 x) \
  5. $ j6 P0 {# w, p; x4 V" ]9 Y$ y( n
  6.         switch($ext) {
    0 v8 t0 m: i0 p5 \3 g  r
  7.                 case 'mp3':
    4 G6 h+ U; E# s6 ^9 ]4 G/ E
  8.                 case 'wma':& t4 L! o, L1 P. o
  9.                 case 'wav':: a% v6 T# t2 P" C4 x5 b0 h
  10.                 case 'mid':
    4 a/ u& \# N7 H' g" ?/ L
  11.                 case 'ogg':* z' q( H2 N7 b& I0 [9 k" \) ?) F
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    1 |% i/ V- Q- p4 s% n
  13.                 case 'ra':
    - D7 J: q0 S" ]. E
  14.                 case 'rm':8 g8 f; m1 k( g1 |3 p
  15.                 case 'ram':9 R6 H! Q; B4 I2 r0 L
  16.                         // RM 无法 HTML5 播放,退化为链接
    7 r! Z9 L* K2 L% `5 _: t+ M7 p
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';8 E; c# I$ m' h1 e% O
  18.         }" b: Z1 e+ k5 K/ p
  19. }
    6 j2 q5 r% X, f6 g5 a: g* @. v
  20. 0 Y, ?: f" Y  \, A* L
  21. function parsemedia($params, $url) {8 F% V+ N* {! ^$ S4 F; ]( o
  22. 6 u" \: R: V- b1 s( H; {5 X
  23.         $params = explode(',', $params);
      g9 V+ `+ C2 s

  24. ( V) j2 j2 |6 @3 z) m
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;
    $ t8 x1 x8 t" S$ c/ C
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;
    ! P7 S8 y: c6 Y& N" F5 o& @

  27. $ q; H- _0 B/ n% v% e1 P
  28.         $width  = min($width, 800);$ s+ d% I, ?  D6 Z
  29.         $height = min($height, 600);: T- b1 `/ c- i: N
  30. 5 M7 L6 }* U, E6 D
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));: V9 \1 B& E+ z% x& g2 a' {$ c
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));: P4 n. e2 N9 S. x
  33. 0 Q; }' Y1 n8 p) X& S
  34.         /* HTML5 优先(现代浏览器) */- u9 ~6 i! a1 n" T5 o8 S
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    . R4 Z6 Q) {) g& X  @- h2 }# g
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">
    7 v/ B' i& m, W2 H8 e0 p2 s' \- N+ v
  37.                                         <source src="'.$url.'" type="audio/mpeg">
    7 b. X4 M7 E3 j  e; z$ ~
  38.                                 </audio>';, {6 q0 f" B. Q; B; [
  39.         }/ ~' `1 G" i; e5 \; h) |3 }4 z/ n
  40. 4 I+ C7 S* g  n' Q
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {$ ]" p3 R. H* J
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"! H9 Q8 @* i6 D5 ]: y0 a
  43.                                          poster="">
    7 l$ s  p  ?$ [; g. x) `9 W8 T, o
  44.                                         <source src="'.$url.'" type="video/mp4">
    1 I: Z4 V( N. O7 u5 F; z
  45.                                 </video>';
    $ q8 o7 }+ a. @! p/ w' x4 P
  46.         }9 c- E1 n+ s0 \2 G4 w7 [8 {

  47. , X/ n* U; s$ D! x$ [
  48.         /* Flash 逻辑保留(但不指望能用) */1 I' z! g) O$ s% Z  L6 [2 s* D+ h
  49.         if(in_array(count($params), array(3, 4))) {
    6 F5 H- v/ ^7 X0 E$ R! D7 Z
  50.                 $type = $params[0];1 g2 {/ ^- s! S( q7 e7 ?
  51. 6 z2 ?1 S0 C3 m. _
  52.                 switch($type) {
    7 d2 n. F2 n8 K: g5 V4 F
  53.                         case 'mp3':
    . Y* U. ?/ J5 j% q
  54.                         case 'wma':2 @; Q0 E$ `/ u8 `
  55.                         case 'ra':
    4 \0 O1 \5 k) E$ R: t
  56.                         case 'ram':4 G- F6 W/ G8 N0 ^1 v' |" G
  57.                         case 'wav':! K& O4 `/ j+ n! `
  58.                         case 'mid':/ w" b' i) Y9 o+ p; w8 `* F6 s
  59.                                 return parseaudio($url, $width);. g) n: U+ i. l9 @/ T- }8 t1 \

  60. 0 k- E4 P3 y7 w& e
  61.                         case 'rm':. o1 R' B  l, O
  62.                         case 'rmvb':
    ( G/ [& S- N* F0 \7 X0 Q
  63.                         case 'rtsp':
    5 C! N3 L! R+ Y, X# ~
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ; A5 E# e, d. g' @

  65. , l) ~9 ~/ _/ W/ u2 R! b( o
  66.                         case 'flv':
    . i5 K& ~+ h* T% }5 s
  67.                         case 'swf':
    8 T, `: x; u  l' O8 u$ T# o6 I
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ; c" D: M( z" i' i% c( H
  69. & m* V; t: n! o7 \: c
  70.                         case 'asf':- i$ V$ u+ d: P; a' a8 k
  71.                         case 'asx':
    ; l1 e6 F+ k! J
  72.                         case 'wmv':
    & {1 Z: Z3 l- Y; h  d$ e' ^
  73.                         case 'mms':+ o& }1 [4 }8 g; g: Y" m
  74.                         case 'avi':
    7 R% e, b: d0 y" U0 e1 p
  75.                         case 'mpg':
    2 ^  n' u" o4 P+ x" ]
  76.                         case 'mpeg':# x9 E) A. a5 f( ]
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';- {8 l: Q0 e5 K9 l/ g4 z. d4 ^( q

  78.   d( H' Y5 t3 t7 H( W
  79.                         case 'mov':  h9 H3 {8 V0 b0 |3 S. S
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    & {' E/ {/ ^7 L: M: V

  81. $ [, I- _8 }5 B. c1 }
  82.                         default:" r9 C6 Q5 V/ X6 l) ]
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';* X4 \4 |8 @0 X. q
  84.                 }6 ~" Y7 \; `  Q* y" A7 O) B
  85.         }
    , R. C+ D( K3 y3 ^# Z
  86.         return;6 i- o: `. L/ e
  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) {
    ! O" o% b5 k: p: ~
  2.         $w = !$w ? 550 : $w;
    ' I) v* a' D, A' N
  3.         $h = !$h ? 400 : $h;9 n  z3 s6 N' R* k$ p
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);4 B. J. j/ u9 h, e
  5.         $url = $matches[0];
    2 {' H/ T+ X% h
  6.         $randomid = 'swf_'.random(3);6 ]" \( t1 }2 u% D3 C& v" ?
  7.         if(fileext($url) != 'flv') {
    & g- {) J+ j5 o4 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>';
    ! U2 o* Z9 C+ u# O
  9.         } else {+ ~. a! \, R3 i, w* T$ A2 ^
  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>';
    4 K. ]! A9 E; A' ]* y! p
  11.         }& M/ Z( u$ `5 N5 Y
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
    8 y" b; C; S( E0 L! ?- c
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';2 _2 e0 H; h& U% v$ ~3 w/ |+ X
  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 21:40 , Processed in 0.033387 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部