【高州情】高州人深圳站

 找回密码
 立即加入
查看: 753|回复: 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身上,
) `4 R- W  t( |, ~' R2 u用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,
- e. n  c7 J) s! m; u0 B虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。

' x8 ?# s0 }' g; o% a4 d
' X# Q* r1 F% `; F: k
  H! |+ q5 {$ {0 e4 t; }0 d* p* f0 `

3 X0 T, r' i; T# l( s: A
( V+ W4 o0 Y, b- ?+ F
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
) p$ t2 P, X) T4 w/ e==============================7 S& s+ n4 U+ _2 W
【目录结构】
5 }1 q3 o/ C2 \) C+ I; P0 }! {% ?' qupload/
6 p3 ^. x6 I) C├── html5avatar.php        插件后端接口(核心逻辑); p1 x0 B9 Z; b& y3 t
└── template/7 V" k# x( l6 h$ I* Y
        └─ default/2 M: F1 W! B2 m. r6 m: Q% O' z* `
            └─ home/
8 G) z4 p5 @/ `" H                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)1 ~8 J: b( h7 x. y

4 ?. W+ u  u- S" x* N【适用环境】
7 q: H) @, H! o, r3 J, G- Discuz! X2 UTF-8
( J& G5 H+ G6 Y. M- UCenter 1.6
) \3 [: v! x# J: s( ~" s5 m- PHP 5.6+
- T6 x& D* e& b* d% W( d2 `& e  k" o: s
【安装方法】
2 E4 H, Z% X( D  w, g1 L' Y. E1. 将 upload 目录下的文件,按路径覆盖到你网站根目录
$ {. S, E$ W4 d  }) R, {* \
& S1 N3 C. M& j6 u! L2. 特别注意:+ p9 y9 a) z/ y0 {6 f$ @( t! J
   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm
. x( P) S. Y2 I% H   (如果你使用了其它模板,请自行替换文件标注部分代码。)
, w3 `2 c8 w* n: T, n0 @0 K! h9 s, M: ?
3. 确保目录权限:
5 l2 D' }. |- u. F0 h0 z   chmod -R 755 uc_server/data/avatar- a. u: s4 q0 r

6 W( V; s( b& \6 i" V0 D4. 进入:
- z) L# X4 m' y   点头像进入 →个人空间 → 编辑头像) n* D5 q# w; X$ p1 Z
   即可使用 HTML5 上传
9 v; \4 K5 M  Q9 q+ Q: A( S- `* l
0 G. _0 h8 \. Z1 O. Z# d# J# X/ s【说明】
1 A3 Q# W$ ?3 |. Z- 会直接替换 Flash 头像入口
$ l% K5 Q6 W; ?) T9 W" W- 无需安装、无需后台开启7 n, |( L/ @) q2 C. \) q- P
- 不影响 UCenter 原有逻辑
  y( `4 ~! Y3 K( b- 保留头像简单裁剪功能(Cropper.js)* R( w5 R& J- a' f1 n0 P; G+ R' y
- 仅新增一个htnl5上传组件

2 b5 D7 B: o: @4 z
3 A) ^, ]0 W6 P& \! g( I
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {% j. ?/ r  q* n
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));/ n+ m: ?; E& L' ^" ~
  3.         switch($ext) {
    : z1 Q" }$ ^3 S1 \- k
  4.                 case 'mp3':% x5 T  `' K: m6 J, ?, `
  5.                 case 'wma':' v$ H$ Y3 v' K! D1 A$ G! y8 {
  6.                 case 'mid':) y0 z* {* i/ z! h( ^& F/ U2 U
  7.                 case 'wav':
      r3 ?2 H" \' t) y. w0 F+ y
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';. [, u& R) s& _! A& W
  9.                 case 'ra':+ i7 E3 G4 m% Y& @
  10.                 case 'rm':
    7 K  _3 J+ B  g1 K  m
  11.                 case 'ram':9 p/ q+ i2 G+ F  ?8 D
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    . x" S( e2 }' z7 ?7 ?
  13.         }
    , E: [# c# c: r( U# ?( |
  14. }* p4 c* E6 j( [- Y1 z6 O8 W1 Z& F
  15. - h! ?/ ]; d1 _0 ^" Z
  16. function parsemedia($params, $url) {
    ' Y: s4 K" S) Q
  17.         ...
    9 ?" n1 x9 b: f/ {+ ]7 O* N
  18.         return parseaudio($url, $width);
    * K! ?% p3 v! O, p
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    ( v, v; n- L( Z4 H
  2. function parseaudio($url, $width = 400) {
    - _! O/ X, T+ m# n  k( G
  3.         $url = str_replace('\\"', '"', $url);
    3 E3 u7 f- C: d2 R8 ^
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    1 u0 x; u- {7 t, L+ K2 V5 s1 @
  5. * x. A2 A1 C9 ?
  6.         switch($ext) {
    + Z/ y1 |1 M9 e' c: M
  7.                 case 'mp3':
    ) S: ~  Y+ @: [/ |1 u
  8.                 case 'wma':
    $ Z+ ^  |7 E1 l8 n
  9.                 case 'wav':3 b+ b$ x, A8 C$ C& ~
  10.                 case 'mid':5 V, J1 a1 C2 K. _6 f% q
  11.                 case 'ogg':
    , f& z/ o# t+ [$ z+ G
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';$ v' _' i( g) f3 v( L$ M- W8 S
  13.                 case 'ra':9 U( M1 A& M$ @
  14.                 case 'rm':
    & O7 q- J6 |) B4 u! G- t
  15.                 case 'ram':5 ?, Q8 D1 g4 e2 i7 l  p: z8 d
  16.                         // RM 无法 HTML5 播放,退化为链接
    ) q$ u/ I* F0 H( x. S) b, x. b
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';* X, P! B) _/ ~; ~
  18.         }
    & C* e' z2 d/ e: z, `
  19. }
    / ]  K5 L8 F6 s" H: k

  20.   Y' O! }! j3 f! J/ W
  21. function parsemedia($params, $url) {
    ( I! ?( _; k4 E1 O: A6 W. `0 p* ?; ?4 u. Q

  22. - l/ d4 y6 P3 p! E+ _
  23.         $params = explode(',', $params);
    $ G! k3 J1 d: \$ y2 F+ C! ^

  24. ( ^. t! ~! T0 G! {- @( ^
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;4 ?* I( v; |$ e' B
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;
    ! g3 E$ v# j5 m& O- P+ m5 a  `  a& d8 y
  27. $ @. g8 w% ^/ G' ?- y  H+ c
  28.         $width  = min($width, 800);
    + O' E# U  N  b* b) T# l
  29.         $height = min($height, 600);
    3 i; A: T  r! {/ D3 o3 l! \6 [- N5 z2 x

  30.   |9 e, ?# D7 k
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));6 I4 N3 }  l9 p8 |4 i
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));  O4 E( U& u0 H% Q! ^: E

  33. $ R$ ^1 z9 Y/ K* n! z8 _
  34.         /* HTML5 优先(现代浏览器) */  B- g7 l6 n8 Q+ F( p
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {  a, h$ Y( H3 E6 T4 D0 z; o
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">
    ! F' Y+ L' j1 S7 m
  37.                                         <source src="'.$url.'" type="audio/mpeg">
    ! v1 _( }' w+ Y
  38.                                 </audio>';; j" S# Z9 u; W# n3 ]* p3 Q
  39.         }
    ' \; r% E7 x# {6 u& |# I/ \- T3 K

  40. 8 M, l& ?' B7 R: z
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
    + o; Z3 p) y: w5 C
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"# x6 ?- j# L9 u9 Y" V. c3 o
  43.                                          poster="">
      f$ r/ Y! v8 k4 y2 _
  44.                                         <source src="'.$url.'" type="video/mp4">. r; w) a. @: a. D
  45.                                 </video>';* J- R: |( o& P7 `$ }
  46.         }
    % @/ i( P. q# A# y; P# D" U) q

  47. ' p$ R6 H( n. h# l
  48.         /* Flash 逻辑保留(但不指望能用) */4 D; Z# t# T: }3 P% X
  49.         if(in_array(count($params), array(3, 4))) {
    / o; e( d& _* \7 C
  50.                 $type = $params[0];
    % R3 M* B3 S' ?% i
  51. 9 f6 l. m+ R8 s# Q: t3 X
  52.                 switch($type) {1 i4 |* o9 V6 e0 e% G) a6 [" H
  53.                         case 'mp3':
    0 \! ]9 m! R' v( ]+ ~
  54.                         case 'wma':
    + u* ~0 K* {! Q( g
  55.                         case 'ra':
    : p. t  f" J) N" v. K' L
  56.                         case 'ram':0 U  Z  w1 G" `; E" E
  57.                         case 'wav':" g  Q8 v7 I4 Z- S; B1 T$ w" K
  58.                         case 'mid':
    ) b; Q/ h4 `# D2 ?2 B+ m
  59.                                 return parseaudio($url, $width);
    ; t  {) [) _: m8 ^0 H

  60. " o! C  A; w7 @! Q2 O+ o
  61.                         case 'rm':
    - G. C0 y$ j; E+ ]$ E
  62.                         case 'rmvb':9 X7 w7 y3 D' a
  63.                         case 'rtsp':
    0 G* O7 B: f, D1 c# Z) Q9 V8 \
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';/ `/ a1 l' l# g( s- x; }3 d
  65. ! E" A  Y4 x8 g
  66.                         case 'flv':, V0 c* P$ M) e7 e
  67.                         case 'swf':4 F: r1 Y8 x0 i' L
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    4 l- `3 y/ y- n6 e

  69. * b# [; G( T' G8 q: p7 Q2 {1 X
  70.                         case 'asf':
    " w9 \. @$ |4 l0 A- L/ V+ [1 u
  71.                         case 'asx':
    $ K# h0 ~8 c4 E, u: t. Y
  72.                         case 'wmv':
    7 m1 u$ P. _  N3 `' p6 G; V7 w. C
  73.                         case 'mms':
    + M% G- m# Y5 m: Q1 B$ b" m
  74.                         case 'avi':
    9 ~# J% m6 d) p6 t, s' B+ ]
  75.                         case 'mpg':
    1 N) N4 Y3 H& {+ I$ h) ?( Y; W
  76.                         case 'mpeg':7 i6 |( y# F) W. \+ e
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';$ N" L6 ~- Z. l8 w
  78. 8 ~' t0 `" \& V- J3 W/ R; ^+ ]
  79.                         case 'mov':) ]" I: K  E8 N$ J' }0 Q" T
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';, C; e* f2 G1 M2 u! u  ~1 [, {
  81. 6 \4 \. q' c- @4 b- w9 ^
  82.                         default:
    $ l& S# L* r0 [
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    . k6 P! n: V8 k  p, K
  84.                 }. V7 O1 B$ k: o7 `
  85.         }$ |8 b4 H# {1 \' {; a
  86.         return;
    4 r( p- i* X$ D  I2 ~
  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) {
    6 G) y* M! ^0 W- h, p9 l
  2.         $w = !$w ? 550 : $w;& S7 L# E/ e. z8 h
  3.         $h = !$h ? 400 : $h;# E. ]7 `; |$ i2 u( S! Y( [
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);
    9 Q5 Y* x3 ?2 H& F: b5 Y+ j
  5.         $url = $matches[0];( X; _) p! G! q* q9 v; W+ B
  6.         $randomid = 'swf_'.random(3);
    8 m7 M; e, {+ }
  7.         if(fileext($url) != 'flv') {
    8 r/ A( M7 n& Z1 k4 a# w
  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>';: Y% v1 F5 n: Q6 C. n) ~6 i# z
  9.         } else {/ P( ?! i! o3 J& h! d5 @& {& j
  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>';, d1 Q3 ^0 Z5 P5 Z7 O
  11.         }* p. E( q! l& J  p/ H" `+ O
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {0 ~3 f5 z1 d6 h# g" {7 `7 ]8 e# H
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';
    4 [5 V" _  \) p* I
  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 15:03 , Processed in 0.028435 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部