【高州情】高州人深圳站

 找回密码
 立即加入
查看: 763|回复: 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身上,
1 O7 ?6 r1 W# R用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,3 d+ \) }. a" X8 K, u. z
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
0 n  a% B0 U2 [3 U$ k1 T1 J

+ f. a7 R8 r0 O) j
0 g$ u: {) E+ r* Z

6 ^  ]/ E) A; x( Q* ?6 O( |. b1 K$ R$ C
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
1 W8 K7 m# R: o3 |==============================
+ ?4 L. L  C: O6 R" M" P【目录结构】
3 I3 F' D9 P& F3 z  [5 H/ \0 Jupload/2 V8 m5 X3 M9 [
├── html5avatar.php        插件后端接口(核心逻辑)
' l( G' Q4 `9 g9 v7 {9 u└── template/
7 s! A2 m9 C3 S4 F        └─ default/
( t7 z3 N: U* v            └─ home/
: U$ F2 m# S4 s                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)
8 }4 q2 j' I/ B) @( y. j) A. a" _6 R. w
【适用环境】
8 {" m- b$ t7 r  L! r7 n+ [; a( I- Discuz! X2 UTF-8& Z7 ]3 ?) Q# x4 o1 j
- UCenter 1.6. K/ G* o4 F# J& f
- PHP 5.6+
; ]4 ^8 @$ w; [2 ~8 Q( {; w5 A; H* Q! s' c9 P, b
【安装方法】" q0 K# j( f* }' }
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录3 X, |- `) n) [( I
4 l" m  I- O8 U3 z
2. 特别注意:
  q/ W! I0 S1 T9 Q2 o+ T1 [   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm( J3 b: ?, W3 B) P3 ^2 H  v
   (如果你使用了其它模板,请自行替换文件标注部分代码。)
- m5 K  ?) M3 s2 i+ B* n8 C! P; e& [0 o
3. 确保目录权限:# }( e5 P$ h/ w9 z" J4 o$ `# c
   chmod -R 755 uc_server/data/avatar! h, e: X! Q9 z& i" ]
' X& F  o0 N- k' F: ^0 k
4. 进入:# C: Q9 C" w6 G8 w0 i# L; u4 y9 `
   点头像进入 →个人空间 → 编辑头像
/ e& G. S1 c. l: s0 |4 ~   即可使用 HTML5 上传: |( R* W) o4 V
7 U" B& V% p  s% L0 n9 s
【说明】
( Z/ b7 h" \, e4 d$ k- 会直接替换 Flash 头像入口* Q8 _% \: f" a, a9 V" k
- 无需安装、无需后台开启. M' ], V: B* I$ V% O2 o
- 不影响 UCenter 原有逻辑% _0 O! U& d; k" x% o( U
- 保留头像简单裁剪功能(Cropper.js)' {- o/ N$ G$ t3 b$ ~& O. m
- 仅新增一个htnl5上传组件
% n! L. w* I# D) s
: t8 V0 g) D& b7 `8 X% X; O
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {
    1 N1 y1 k" t- |, Y
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));" _! b' N& k; c8 A8 b: g
  3.         switch($ext) {
    6 J+ y" X  q  c1 g  K- V7 y
  4.                 case 'mp3':& \( G! ]' i/ L. T1 R
  5.                 case 'wma':2 j  Z7 x/ a% p  N
  6.                 case 'mid':+ C% m+ ^( N( \, C) ?
  7.                 case 'wav':
    % g4 w- v! N+ U7 Y
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';' i9 s2 F6 j  L7 w0 Z
  9.                 case 'ra':
    3 d' ~1 c0 H: T2 H# z
  10.                 case 'rm':
    + d( y" i5 V! G
  11.                 case 'ram':
    ! g0 W5 a4 K: T" M% y* U
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';) K6 Y: m7 A& S6 x$ J, |- ~$ q2 s
  13.         }
    - z& D. h: J  N
  14. }$ n2 o& A* `( A4 u. L- w
  15. ( b2 B5 {' Y. F2 v( D/ {
  16. function parsemedia($params, $url) {5 V' b, Q) G2 y& a# a
  17.         ...& n/ o) b2 q. k! O. }0 ?7 {( ~
  18.         return parseaudio($url, $width);
      c  m- t2 J2 W2 x
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件) D8 R1 {. c# r7 B; L
  2. function parseaudio($url, $width = 400) {
    0 ]6 R6 m9 Q& g  U' g. o' t! x
  3.         $url = str_replace('\\"', '"', $url);
    0 R! M3 D2 b& V" ^- }, `( q
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));7 p" Q5 o' h7 \

  5. * A) U9 {) E% r8 z2 K# ]) J
  6.         switch($ext) {% ?3 e  ]& f+ j+ j( t& b: o
  7.                 case 'mp3':
    9 M4 ^* I/ ?! n% r" ]2 x3 Y& s
  8.                 case 'wma':
    ! E( c6 N0 P7 i3 m! C" h
  9.                 case 'wav':+ M( ]/ T) s4 o# n
  10.                 case 'mid':! y: C$ ~/ B; }6 E& `
  11.                 case 'ogg':
    9 U# X0 K3 X+ {7 f' t& D0 L
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';( f5 L' F+ Z/ `
  13.                 case 'ra':
    ! E4 a# J2 @. K$ t; V! |! {
  14.                 case 'rm':* p7 j$ x$ K! t3 p/ f1 m
  15.                 case 'ram':
    : g9 g2 S; H* k8 G" f. J
  16.                         // RM 无法 HTML5 播放,退化为链接
    - R& O  n8 b6 T2 H. i* {/ Q
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';, o, e6 a+ X4 S+ c+ p6 X$ w
  18.         }
    2 O2 w. O. D2 @; y* L3 W; O8 O! g! e
  19. }
    ( T9 L/ t3 j. ?. I/ N$ P3 T# |
  20. # G, Y9 K5 f! w7 n3 [. ?, z
  21. function parsemedia($params, $url) {
    " s* P/ Y, P) X% X$ w1 J- @

  22. 8 t  M" f9 Q& t4 G5 g6 V0 }
  23.         $params = explode(',', $params);
    8 x( u* o9 }' v3 ~# O! D) Q1 z
  24. 9 s) }6 \) T8 u$ \
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;9 ^0 H$ a6 P% @
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;
    1 _5 x1 ~1 m* u3 K

  27. - z# e8 D2 O  L4 G
  28.         $width  = min($width, 800);
    0 r: N3 q5 \2 B; J1 X) x
  29.         $height = min($height, 600);  t) H, h# g  B; K$ Y! R, \) I5 `6 V; K

  30. 5 g. B# ]& k# l9 T* y3 N
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    ' Z8 I$ s4 u- w) N" b
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    & {4 U; w2 q! a: }
  33. 7 B  e; u( U8 Y- l. o
  34.         /* HTML5 优先(现代浏览器) */% l. R* ]1 I% D9 \. F
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {0 B; J& ^5 p- |, U+ [
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">
    + J9 i. a) b* d: V4 b+ W$ R
  37.                                         <source src="'.$url.'" type="audio/mpeg"># R; Q7 b3 k! h3 P* v
  38.                                 </audio>';
    ) k8 H$ E7 K+ I" U. p" V
  39.         }6 B2 i1 f: @: c0 T' j4 k

  40. 9 ]4 F! i  P/ o  H/ T
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
    6 X5 g0 ^3 `/ n
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"
    4 M+ c: A+ Q5 ^0 u5 T* f  D! A
  43.                                          poster="">
    / v1 x. W; r+ c# J, v9 F6 O9 _- z
  44.                                         <source src="'.$url.'" type="video/mp4">
    ( w$ m2 |4 h( C9 I4 Q3 f6 p* C5 j
  45.                                 </video>';! G; h8 N" j- U; q# O8 D* A' |% U
  46.         }: y2 P$ C+ {1 |$ B* C: o7 {2 \

  47. ; ^. m, _* k4 o! d; c- P
  48.         /* Flash 逻辑保留(但不指望能用) */5 `7 m* v" y! v( f' ^! K% K
  49.         if(in_array(count($params), array(3, 4))) {
    $ Z" T1 ~, a- ^) f8 \2 t4 W
  50.                 $type = $params[0];: r4 k- V, Z' h+ o6 a
  51. , U7 W. G9 x/ Q. g( V
  52.                 switch($type) {
    ( h7 Z) J( r+ L0 h8 o3 U) N5 Z
  53.                         case 'mp3':; I5 }6 g, k3 R
  54.                         case 'wma':
    4 \) `& Y2 O, W: h* Y7 x
  55.                         case 'ra':
    0 K5 _" N( L0 H( E+ V, i7 x- n
  56.                         case 'ram':9 L7 X, _& n; c. I7 u( z, p7 t2 X5 c
  57.                         case 'wav':$ Z4 T8 ]* b! N9 U
  58.                         case 'mid':
    2 X8 V* W) J$ S
  59.                                 return parseaudio($url, $width);
    / v, j) A7 `# S- J+ d/ Y4 p! |3 |

  60. & p8 g2 z2 j3 M
  61.                         case 'rm':
    ( t3 j& }1 ?8 {
  62.                         case 'rmvb':
    $ w9 K( L/ w' O, }2 r
  63.                         case 'rtsp':/ p5 X5 e( O7 m/ l* Y8 i) ?
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';, {$ W- j( h- |

  65. % o+ A! ^: G( p6 f! L
  66.                         case 'flv':
    5 \) N- M+ n8 S5 i  ]5 R
  67.                         case 'swf':
    % _* b) b* _2 O# _$ ~( S! f- C5 t# M4 n
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    0 L1 h0 A3 e7 j0 |

  69. - O  p7 [1 Q+ E  E' n4 g
  70.                         case 'asf':5 }# L$ `0 R! _) S! S: K* M: n
  71.                         case 'asx':. S! k6 \' E9 A. f3 B
  72.                         case 'wmv':
    9 P# s, x1 }0 R" P" \( w
  73.                         case 'mms':8 o# U! D5 a; _6 ~9 i5 _
  74.                         case 'avi':) _& s0 Y* x# w7 X% d
  75.                         case 'mpg':
    4 o0 K& I: @3 G  u6 F
  76.                         case 'mpeg':
    . F, ?( \! K$ |! U. U. ?
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';* c7 q* U2 b# m' o5 M6 z9 s

  78. 5 \. S4 B1 x9 X- H. O& Q* G
  79.                         case 'mov':! o/ d( y7 P. T3 z' U
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';+ n* D1 c; A- j+ G$ V# o

  81. $ T8 c  F$ k$ H0 w
  82.                         default:
    8 |0 ]  S/ \/ J+ B" y1 R) m
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';; s& `9 w  m1 D% M5 R5 i  F( P
  84.                 }
    ' C% T8 C$ B1 k' n+ ^
  85.         }
    $ E# p; ~  s. f0 \! m6 `
  86.         return;7 T+ r4 R% G/ E' X2 [9 ?- G: w
  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) {$ C( R1 l- Y( D2 N
  2.         $w = !$w ? 550 : $w;+ \4 g0 K) s% |
  3.         $h = !$h ? 400 : $h;! ?0 p% F5 x- I* I
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);
      r' @3 T' x0 |! o
  5.         $url = $matches[0];/ M8 T9 {1 S6 S  ^. x& @
  6.         $randomid = 'swf_'.random(3);
    3 I7 O. S4 L, x- C3 x
  7.         if(fileext($url) != 'flv') {" K8 Z0 ]( K* C; b' [& o
  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>';0 t) [5 V: h# {
  9.         } else {
    - o- l2 W: t: Q. Y2 l. l: ]" B
  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>';
    ! U0 ?* m6 `5 w% P7 l7 s1 I3 I  }
  11.         }
    2 M, Z% D4 ^8 k9 @6 I
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
    ; R. t4 Z. m! a0 o
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';9 a" z; t3 b. _: b
  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-7 04:06 , Processed in 0.028967 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部