【高州情】高州人深圳站

 找回密码
 立即加入
查看: 385|回复: 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身上,7 r0 r! K6 P/ E6 @5 {. s# R
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,/ ^# j# `, x2 |9 V+ T4 e5 {- r
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。

' G& B2 s& P, x: h6 m6 b/ E
- X$ x% E6 ?: _) v6 W5 ?7 p

$ ^6 i! y* z3 ?& r9 f! T% u3 n+ a, [
6 z7 [  J3 y8 P" D! Y
Discuz X2 HTML5 头像插件 v1.0  2026-05-05: _6 T" J: Q# @0 k% C& r" _
==============================
! e/ T2 R. [- L2 X3 W2 E: g7 d【目录结构】( H' o2 b& v( n8 N! j% P9 P
upload/
' ~; [3 K6 ^) k4 J9 J├── html5avatar.php        插件后端接口(核心逻辑)
' q" C8 e0 H4 T% \! F└── template/
3 I2 u; H. K: Z% Y( [        └─ default/- D& H- r2 p# O- {
            └─ home/( D1 X* g  }: ]6 {, a  j  Z
                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)/ S6 t6 F8 }: c; A+ z7 o2 z9 L" h
7 b! M9 M$ p9 T7 {6 c" z8 L5 n  q) i
【适用环境】
; C$ d1 ^$ S# m3 [1 B- Discuz! X2 UTF-8
5 g% U* s: O4 @- r1 S9 ?' K- UCenter 1.6
5 f/ H2 e" D, H  \* F- PHP 5.6+& ~  l: W9 U5 m/ Q4 }, G  G
2 u9 _6 i+ N9 V5 n# C( E; ]* m
【安装方法】
) N  y% E; ^6 x- H, W; [/ @1. 将 upload 目录下的文件,按路径覆盖到你网站根目录0 O; ?2 `9 v  A

6 i/ s& ^+ Z9 \( q6 ^2. 特别注意:
7 v# v& q7 `7 s- U) Q* b3 b7 |   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm
4 {( o% n/ P3 {2 |. W   (如果你使用了其它模板,请自行替换文件标注部分代码。)2 A7 ^: B: V, o" X4 h
2 b+ ~7 S' B6 p+ e
3. 确保目录权限:3 Q" w& @% _: s1 ~% T% x4 P5 T
   chmod -R 755 uc_server/data/avatar
) _0 m) P! F; G8 \6 d- H1 W. e& @7 t# N# @+ t3 v* v" v
4. 进入:# \% j4 H$ v2 V$ P
   点头像进入 →个人空间 → 编辑头像
7 N! c  K1 B, W+ e9 m# L5 A- Q   即可使用 HTML5 上传
0 d" T" S/ I, K1 F/ m+ P# R+ ^! F, S4 y
【说明】
, ^$ S9 L1 d) K* F7 S9 c2 ^8 Q- 会直接替换 Flash 头像入口
& ]) ]# b: i$ F! p- F- 无需安装、无需后台开启
6 k$ E/ t  _4 s. x# W  x4 S- 不影响 UCenter 原有逻辑8 A2 Z6 q1 R9 P( j9 s* r  W, R
- 保留头像简单裁剪功能(Cropper.js)
: U% }( I1 d' B- 仅新增一个htnl5上传组件
2 Y! X- V* J* v7 d
* D9 f8 t' Y2 [; A* _) L$ B
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {& h! j$ v3 ]* k8 V
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    ! x/ h; c) D6 S) Q
  3.         switch($ext) {
    * R# Y1 Z6 i7 A9 J6 a" S6 m; `
  4.                 case 'mp3':8 ?' s$ _, N# v; w; |
  5.                 case 'wma':
    % W$ r0 O+ s* I. C' ~) \
  6.                 case 'mid':/ N  ^8 l  a7 w9 U
  7.                 case 'wav':
    9 a% p2 C$ l1 A+ Y( p6 \. L
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';' _3 r. A& y7 z" o  C5 E5 z
  9.                 case 'ra':! N" b+ L4 Y/ I/ j6 M! s) d/ n' R/ U
  10.                 case 'rm':
    ' s" C: U. n% p& ~7 j) T
  11.                 case 'ram':0 c( Q" L: n$ M* f5 h
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
      o3 r% }' C5 v
  13.         }) w' f( G7 g7 s
  14. }
    ' a* R: ^4 V9 W6 P' A

  15. - L" W7 r. }5 @4 e7 V$ B# X
  16. function parsemedia($params, $url) {4 j: A: C$ |, ?, f% X
  17.         .../ y, E$ j3 X# C0 c% g
  18.         return parseaudio($url, $width);
    , ~, K/ v. i5 r& j' z
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    6 F5 g3 n% v$ {8 o
  2. function parseaudio($url, $width = 400) {2 {7 e9 K0 r, K' }9 Y" ^
  3.         $url = str_replace('\\"', '"', $url);3 c9 q1 f" O' v) F5 g" }. N7 g
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    / w3 _: y% y! n+ X/ i5 x

  5. ! D/ Q; ^' I4 w/ E. x6 S. J
  6.         switch($ext) {: C" \1 c( V' m( C# N3 S
  7.                 case 'mp3':
    . ~2 R0 g( e* ^1 a
  8.                 case 'wma':8 r  g6 G6 i3 [& z3 A
  9.                 case 'wav':
    , S6 @- I, R& A9 P2 [, e: }5 H
  10.                 case 'mid':
    . A, i1 L" X7 v3 o- f, q7 h+ o
  11.                 case 'ogg':4 ^& `; N  ~( P! Q1 |* q& Y$ i
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';1 d6 g3 L. k; m6 A
  13.                 case 'ra':
    . d6 b0 N2 k8 J# c
  14.                 case 'rm':8 C; |& P# a7 z4 g
  15.                 case 'ram':
    9 z3 W7 v+ n0 d( z* D
  16.                         // RM 无法 HTML5 播放,退化为链接
    2 q1 {; ^$ p7 B4 v7 ?2 r" f
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ! ~# R4 N. N* v1 P
  18.         }. @  x1 s' P% i
  19. }* [6 q& k' F7 y! ~) d

  20. ! ^) a- G. V% i
  21. function parsemedia($params, $url) {/ j! L: H  t1 t
  22. 3 q0 I4 X' A* n3 E. D
  23.         $params = explode(',', $params);
    . M# \3 z' o0 H( L; K4 d, D
  24. " r6 g2 V5 D3 ^# n  p
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;& s% c% R. n1 Z! [
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;' w2 o+ A1 v: w  L* H& i5 [) H3 |

  27. ( l) @6 B; P! A) J
  28.         $width  = min($width, 800);: h& _* g7 f. v6 o; Y8 s
  29.         $height = min($height, 600);4 g8 F: o% W, D  L. W

  30. : A: e6 T. R  m: l6 P: G
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    ! B8 q$ _7 k' M
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));- J; I  y4 Q1 s9 \/ ?

  33. . Q# J1 `- }- M* _7 F9 Q
  34.         /* HTML5 优先(现代浏览器) */
    * @# X2 x: K# j3 `. W
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    5 w: H. T0 f1 T% j4 G  n8 r
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">
    & ?1 |8 f- Y: f0 L
  37.                                         <source src="'.$url.'" type="audio/mpeg">: _! g  e; i  t" m
  38.                                 </audio>';
    ) H: P$ V6 V8 n4 T: X
  39.         }. P9 N8 p! p8 d2 n) z; a
  40. 2 p6 ], {, ]* z# ?
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {0 o$ ~- j) [$ w& U/ x9 c( [
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"7 E# i/ f/ s/ b: b0 R, S* L% R$ o
  43.                                          poster="">
    % d# z4 _" `$ |; m- x" x$ ^% g
  44.                                         <source src="'.$url.'" type="video/mp4">) C0 ?  }% L* J  O, G5 N: S
  45.                                 </video>';
    # ?# n% O) q; s
  46.         }' Y1 u$ t' ]2 Z* r5 F5 m+ {

  47. + A) ^; y  M3 x
  48.         /* Flash 逻辑保留(但不指望能用) */( e$ E' W& x5 [9 y
  49.         if(in_array(count($params), array(3, 4))) {
    0 c3 Z. x; E: R  s; ~
  50.                 $type = $params[0];" Z" ^) Z' u4 H  X3 V
  51. : M) ]# k1 _' P) u& ]: u
  52.                 switch($type) {) u, X' q+ }$ w6 Y
  53.                         case 'mp3':& P5 q. ~, h  H( _: d% V& l( @$ @4 C
  54.                         case 'wma':
    $ o, }& ?* E: [+ @
  55.                         case 'ra':
    - ?( w7 m1 r: X7 _5 s
  56.                         case 'ram':; Z% I# H8 `; A6 q2 |4 {" _
  57.                         case 'wav':
    / w+ I( @. @; s+ G/ }* c. u- i
  58.                         case 'mid':! J/ }8 O' Q6 `. |5 ?% ^* R6 o$ o# |
  59.                                 return parseaudio($url, $width);5 ]3 i4 r2 ?  n3 w) e4 h6 d

  60. # b* \) r& t0 T6 I
  61.                         case 'rm':
    . Y  @& ^" ]* g6 `. d$ n+ ]) d  J& d
  62.                         case 'rmvb':+ L' T( \5 M: }& L- X5 `* v
  63.                         case 'rtsp':' X9 c2 w: {! N8 q, X3 `
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    . E# r+ J, C! }7 s0 v& e
  65. - P5 W! B+ J+ o' ]4 l. q% n
  66.                         case 'flv':
    ( B5 W7 A4 x( |7 T7 O& G: ^
  67.                         case 'swf':2 h) F, A( l3 p7 X. N
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';$ D; s9 l. }% ?& h# U) a! l
  69. . q3 C/ V& P4 y4 h4 _
  70.                         case 'asf':
    3 Y0 Y- z4 Z2 y" L4 G
  71.                         case 'asx':( r- @1 M5 }) ]6 I% X- V! k
  72.                         case 'wmv':! K0 K  K8 x; l7 A
  73.                         case 'mms':
    7 g' [& x$ L4 [# }& ]
  74.                         case 'avi':% }& }$ |/ F# J4 y
  75.                         case 'mpg':
    ) a* |" a- Y3 f& ^1 H6 w, B6 f
  76.                         case 'mpeg':2 n( y! Z. M: Y# p9 K$ S
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';: ]" P: U2 S5 a5 Y

  78. + S3 O, K! h7 P4 b: h3 W
  79.                         case 'mov':) ~, v% c2 T  e0 i6 }1 d
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';* E; a5 @' E( i

  81. 4 l) S/ Y' K3 R6 V! v
  82.                         default:3 m2 L# B. r" a' |
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    & M4 A1 M8 ?0 f2 r+ i" v
  84.                 }
    / E7 h5 c" m) Q$ i" g
  85.         }
    " |* y, b' f6 X) z0 A
  86.         return;% Q* y$ \! L. p8 j$ X/ X& W; r
  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) {
    ' j7 y; e8 c8 g7 A- J
  2.         $w = !$w ? 550 : $w;
    9 C$ d3 j- k0 G9 }/ H' M
  3.         $h = !$h ? 400 : $h;
    * J0 N. r2 p: [8 ]% ?/ R- s
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);: o; x0 U0 Y6 ~8 [- C" q  c- P1 m+ J7 j/ }
  5.         $url = $matches[0];
    6 Q: L" K1 S* j& s/ P
  6.         $randomid = 'swf_'.random(3);
    0 {$ U6 c% l8 b5 B) q1 z& q1 S
  7.         if(fileext($url) != 'flv') {' }+ e7 S7 t( v$ b) |2 [- ^
  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>';
    2 t+ {5 ~- J; P
  9.         } else {0 c# E% ~2 ~- d2 [
  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>';
    ! B5 K9 a" n+ F5 h6 C# O2 [( F8 p) A# H
  11.         }. _! N$ k' \! |
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
    - U9 ~, W. @, F4 f  N
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';3 q# ]+ h5 s! W; j" L) Z. i( 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 22:09 , Processed in 0.034767 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部