【高州情】高州人深圳站

 找回密码
 立即加入
查看: 590|回复: 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身上,* Z% b6 B0 q' Z5 f' ^
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,
& _0 H" I8 b& S' X/ f虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
: ?& B. X& N2 \
) R: U: e2 k$ U" O, L- s
; c) n# j/ |0 K2 \4 Z& p
( G" G; }) S% j- W- E3 d5 ~9 a; I
/ \) U) |9 y  \* B/ z- f' X
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
# k9 T# H- l7 h: {5 U9 J9 r- k0 M==============================7 \! Q6 M- d. h, {
【目录结构】: w' t* `3 [  `: q4 ^' z) e
upload/4 o( h( l' [7 w0 y- \9 k$ o
├── html5avatar.php        插件后端接口(核心逻辑)
' y/ [( r5 T5 e/ ]└── template/
4 V; z6 }7 q' W3 H+ X" D        └─ default/
% \  @: \  e3 A$ X3 N* d6 F            └─ home/
4 w( H2 a# x& f) h( R' x- s2 L                └─ spacecp_avatar.htm        前端模板(含 Cropper.js), B- a9 K/ M) X; s2 u. T! s

( _0 ]9 ~9 e& A' B2 s5 ?. ?& M【适用环境】, h2 `) h9 N- w  _
- Discuz! X2 UTF-8
6 ]7 v& s4 V- B0 E0 S# }, t- UCenter 1.6
' P- D3 u# n3 [" W& R- PHP 5.6+
& A& I' i# O# G  i
- S2 H2 w! f4 k2 r【安装方法】
+ Z( i% G# O" Q2 h' w* b% Q& K1. 将 upload 目录下的文件,按路径覆盖到你网站根目录
9 J0 e+ Y  j' Q4 t: B# A9 D6 Q8 |  ?! J( @) j% Z
2. 特别注意:8 Q' h+ `4 `& T/ N. S( r: v) r
   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm: }* w7 E6 V" B- K
   (如果你使用了其它模板,请自行替换文件标注部分代码。)' a# s8 I4 e# x% ~( o* F2 C5 P

8 {, t- u, h+ m. `3 O) ~3. 确保目录权限:' }( L, H, s4 Z1 K6 I8 m+ i
   chmod -R 755 uc_server/data/avatar( Z7 }. C" j* \9 n5 ~8 n

0 k, J8 d1 T' `# Y6 K8 d4. 进入:7 i- M( F) b! r) k6 |
   点头像进入 →个人空间 → 编辑头像" ~1 ?1 b) G& C) _
   即可使用 HTML5 上传
0 U% m0 f% K/ L" ^
  \7 K1 D" A/ V/ d0 }( a, Q【说明】% f$ O3 T! \7 Y8 o$ O* j
- 会直接替换 Flash 头像入口; r8 V% R! \" B& P
- 无需安装、无需后台开启
/ [# \" `( }/ u& j% Z- 不影响 UCenter 原有逻辑0 l! P! h8 Q+ ?0 ]7 j" P: ?5 R- [
- 保留头像简单裁剪功能(Cropper.js)
! D* y" ]! ~' y: E- 仅新增一个htnl5上传组件

1 G& P/ n2 n3 F3 b$ H8 c! }' v2 ~. i* q- y
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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

金币
7316
贡献
615
威望
9151
最后登录
2026-8-24
帖子
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

金币
7316
贡献
615
威望
9151
最后登录
2026-8-24
帖子
1875
积分
25896
UID
10

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

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

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

原多媒体控件:
  1. function parseaudio($url, $width = 400) {; O8 H/ b+ N" g" l
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    9 {6 ?, O/ {, w! T; z+ m9 h
  3.         switch($ext) {
    ; s5 ~2 e2 B- b8 A1 H9 Z
  4.                 case 'mp3':2 e2 p0 u  K( u. F, l7 c; D
  5.                 case 'wma':' W# |  }( f/ p5 M. ]9 O
  6.                 case 'mid':
    ; n; q  R$ I1 W  U0 ?+ J
  7.                 case 'wav':5 D7 V4 _) z& r* a) T1 \8 C
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';# L; f9 h& A5 a! f
  9.                 case 'ra':
    1 ]) L3 h( p+ r& v2 {  O
  10.                 case 'rm':
    ) |" `, z, _9 f5 Y$ c
  11.                 case 'ram':
    ( m; O3 i" H; u7 R& ^
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';! D7 i( W" ?0 e
  13.         }
    2 \; O  X( J; F! ~- ^
  14. }
    , s& P$ O: n/ U2 y6 P; M, D" Y4 a
  15. " y! C& ?. z3 u0 F9 g$ s
  16. function parsemedia($params, $url) {6 j/ c$ I4 g7 f5 I( Q0 K. Y
  17.         ...- ?2 R8 e& m/ |1 c" M" u( Z
  18.         return parseaudio($url, $width);
    . K% I6 s0 B- \: U
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    ' y/ V9 z+ v! V  M, a
  2. function parseaudio($url, $width = 400) {8 V% L" T, G9 N/ y
  3.         $url = str_replace('\\"', '"', $url);
    7 \$ X/ |/ E5 z) t
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    * p' ~  I4 @2 B: ^* P. f+ u5 [
  5. & I$ {9 `$ w$ Z
  6.         switch($ext) {" S4 ~$ [2 \. H0 H6 y5 a/ p8 \% @
  7.                 case 'mp3':
    & Q( B# K' y; w" `
  8.                 case 'wma':3 `! [; j' i6 y4 B; m
  9.                 case 'wav':$ w/ F' n8 o' t0 k6 X1 |
  10.                 case 'mid':7 C: g( f( \0 r0 J; C- C
  11.                 case 'ogg':
    1 P, W6 J/ e& k! z# y
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    * T. c3 t3 ?8 `
  13.                 case 'ra':
    ) A: V  H# \2 \; E4 T2 J$ a1 A' {+ d9 i
  14.                 case 'rm':: {0 V" h6 q! ~/ |: A7 L) h
  15.                 case 'ram':
    ! N" {7 k% a) q1 p5 o4 b6 r
  16.                         // RM 无法 HTML5 播放,退化为链接
    1 r7 P$ U3 C; l  x3 F* u
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';8 L9 B, S& p9 ?( ~  f
  18.         }: [3 J0 ]# q4 Q! Y& X) {
  19. }
    4 Q8 R6 G5 G4 k5 V
  20. # E# L: m8 u- q; t
  21. function parsemedia($params, $url) {/ b! ~. p, C% r' z/ Z

  22. 5 E6 T0 A" p# f
  23.         $params = explode(',', $params);
    1 r* A3 ^' i1 z9 q. Y7 D

  24. # o7 R( V  B* ^+ f* i- X
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;
    # _/ P6 P8 J1 I9 a0 s$ M
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;2 L$ x- i& O; E& f

  27.   M) A0 K8 z; J
  28.         $width  = min($width, 800);7 @' W7 o. c9 F* k0 F8 K% ^4 _
  29.         $height = min($height, 600);
    # g# b% k0 m. S- b7 v
  30. 9 g. D, w8 u2 F/ j2 \' G. a
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));0 j5 `8 W' C, }2 i/ Z2 D0 @' _
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    / J9 C& U1 Y. ~

  33. 6 U0 B/ A' C; Q4 Y$ S2 J
  34.         /* HTML5 优先(现代浏览器) */) \' o5 |2 [. O* j/ M
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {# z$ }* ]& A* d. P) k$ ^
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">
    7 W2 w  h) ]/ {+ G9 K
  37.                                         <source src="'.$url.'" type="audio/mpeg">- [% V1 U3 c1 s1 D+ I1 Z
  38.                                 </audio>';7 s# l& j4 e* E4 I$ s
  39.         }- C, K. t% F7 F
  40. 7 q" g, u' Q6 X9 \" e3 A8 n
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {8 k* A5 ~8 N7 k
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"
    2 ?1 ]9 H  p' _5 q- s
  43.                                          poster="">5 e6 ]1 ~- }; d# v3 f" G  H8 r; f
  44.                                         <source src="'.$url.'" type="video/mp4">7 v/ o: P% A2 y* N% _% C: w+ j
  45.                                 </video>';
    % w) ?3 f" k; p( N  ~
  46.         }/ l& x+ f! ~$ b  ^/ F$ C

  47. 9 Z: ?; g8 Z! S; }) X
  48.         /* Flash 逻辑保留(但不指望能用) */
    3 U3 i" S* p2 k+ h' ^- L
  49.         if(in_array(count($params), array(3, 4))) {
    + U5 x3 E! C- C. ?
  50.                 $type = $params[0];. _# Z+ }, {+ u- f. Z0 n2 a' T! `0 T

  51. 3 _8 g1 H: O6 D8 Q! o* k6 h
  52.                 switch($type) {( ?5 @& q# I; F+ G, _2 F% ~8 a
  53.                         case 'mp3':$ r# A+ ?. u/ Q8 ^( j
  54.                         case 'wma':
    & e4 B' L& A9 D) S3 r4 ^3 ]
  55.                         case 'ra':
    * z( g4 W% M% x' d
  56.                         case 'ram':
    2 l6 \$ ?) n) d( S2 p0 L/ F8 c2 L
  57.                         case 'wav':
    ) Y# h1 K6 h5 W, P8 O
  58.                         case 'mid':0 v4 z9 o/ Z/ v1 o/ K  _  `
  59.                                 return parseaudio($url, $width);1 g5 u4 c; j8 Z* P) P$ i$ I) i1 t
  60. ) ~7 R7 W( A% I. j* \( L
  61.                         case 'rm':# t/ V9 f; q1 w3 h1 k
  62.                         case 'rmvb':
    ! i7 Y- k" M( H' [, \1 G9 C! s
  63.                         case 'rtsp':' l- U  M' B. M# J- V
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ; m1 @! L9 ~" r) u

  65. ' ^- N; L& o1 s" S
  66.                         case 'flv':+ t( G3 F) @" m" @8 J" R% ^( y5 n
  67.                         case 'swf':
    # f& R7 H, ]7 j  B
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';& ?, f, g* ~' K/ `& |% f
  69. " G8 U7 H' G. E" A0 W
  70.                         case 'asf':
    # E. O) k% m# I7 g5 ]
  71.                         case 'asx':; A, a4 i: [# j- e3 e3 l4 O0 T
  72.                         case 'wmv':" D8 ^% @: r0 K: s, }# {
  73.                         case 'mms':
    5 U* e: r( S3 V) X! S
  74.                         case 'avi':
    ; F4 s, l( R0 D& W: q. E
  75.                         case 'mpg':5 r- c; e1 ~0 B. c, ~! k
  76.                         case 'mpeg':
    0 i' H+ r$ d6 Y3 M, D4 e
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    * q; t$ z- [0 E6 H; _
  78. ; }" n* n/ b# H0 m4 Q- c& I+ F. ]
  79.                         case 'mov':
    $ r& ], C& b1 y
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';, A' s* ]* G4 F; K/ U0 m, _6 Z/ f
  81. % c! j" ~+ d4 N, V1 h1 S' }( q' D
  82.                         default:; G- X3 Z8 p' n
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
      S* d* H0 ^+ K5 R, g- U% m3 G  S
  84.                 }$ r( w* d! b+ ~2 I# Z( ^' D6 [. y
  85.         }* r# ]( d) t" R. t! H' G; o
  86.         return;* t" _& l+ L; e4 u) D' }0 x
  87. }
复制代码
这个世界只有10种人:一种是懂2进制的,另一种是不懂的。

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

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

管理员

论坛测试[砖]家

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

金币
7316
贡献
615
威望
9151
最后登录
2026-8-24
帖子
1875
积分
25896
UID
10

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

5
发表于 2026-5-18 11:03:28 |只看该作者
原FLASH已死:
  1. function parseflash($w, $h, $url) {. B" x/ S1 B) q$ i
  2.         $w = !$w ? 550 : $w;5 @* C. c" a! ~3 x. {% ]3 e" q8 s) J9 H% U
  3.         $h = !$h ? 400 : $h;5 E- z  }* l1 X" E9 |& B+ r
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);
    % E! u$ u6 L& r1 I, |) ^, K# i
  5.         $url = $matches[0];6 Q$ n4 t# u; h0 s
  6.         $randomid = 'swf_'.random(3);
    , g5 i) Y- q0 Z
  7.         if(fileext($url) != 'flv') {
    9 F9 h$ g% s% L
  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 @! W  J& s( ~, k* J' n2 D. o
  9.         } else {7 U4 R/ \0 k& C; r! s+ s
  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>';" J7 S: ~" N3 f5 G2 `  S. ?
  11.         }( f" V  G* a6 h: _- Y
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
    9 M! w4 x0 U% W+ F- Z" i
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';9 W& z+ X6 G* C8 d  r- f
  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-9-23 05:33 , Processed in 0.026880 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部