【高州情】高州人深圳站

 找回密码
 立即加入
查看: 377|回复: 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身上,, y2 Z2 U3 L0 f" |% U
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,3 c! }. E8 ]& n
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
# r  F/ e) b; s

+ D5 {$ y9 X) I% E0 Z7 `3 J: X
3 b. H2 `8 n+ v( k9 x8 S
' Q) {* f- i1 X! ]- |$ n( ^' b

- F) `" x; x  a, {8 ]( x
Discuz X2 HTML5 头像插件 v1.0  2026-05-05- k0 R, }9 ]9 a  v' P- f
==============================) u0 [6 R. Q+ U6 t7 q# ~
【目录结构】
8 ?' Z( L1 |) ?4 z( ]/ A( G+ [2 Dupload/
$ h, @6 o: P  g4 }; d├── html5avatar.php        插件后端接口(核心逻辑)
9 I$ A' ?0 H* U0 v+ B& L3 F└── template/
  w. ?4 z: t/ D6 n3 H1 f        └─ default/$ r+ W- Q) T0 |$ Y$ ~- p
            └─ home/9 c8 v; K0 o5 l" W! r2 R4 |
                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)5 F$ B) K" }1 D: D9 j( d
3 Z9 o. C' q& u
【适用环境】8 t6 E3 Y* ]1 I& `# N- y% H
- Discuz! X2 UTF-80 H  i# o  a. p. l  k0 Q) _" g
- UCenter 1.6
7 a6 C1 K# m( a! H/ S8 F  [- PHP 5.6+' s; y/ A1 c6 r. @

! h3 Q! D) X, ^【安装方法】. p) ?- x* `; g: s4 }
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录! x* e$ a' z6 M- c: n3 g  q
9 L  W  T. J0 f: T
2. 特别注意:6 J) W/ a1 ?* ?1 e: M  b( I
   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm$ s' k1 Y8 j3 w+ i* y; i
   (如果你使用了其它模板,请自行替换文件标注部分代码。)& A5 T& w3 N" z3 U2 |

" c3 A& m; S1 E$ Q; E- w! G3. 确保目录权限:% d4 t4 D$ ]$ ^6 m: @
   chmod -R 755 uc_server/data/avatar& h0 C5 h* i6 M
) z' ?5 F7 n' a3 o/ G
4. 进入:9 m8 A0 T8 q2 G8 {
   点头像进入 →个人空间 → 编辑头像
9 _! X) ?5 U( l4 I* b. u   即可使用 HTML5 上传; ~) |0 q9 s' i* x7 b' J
+ f  i) M7 |' x- o' _
【说明】6 N+ g( x0 X8 a& Y3 m
- 会直接替换 Flash 头像入口
) h! ~) h! `' S% {* C- 无需安装、无需后台开启3 s/ W4 N" y! c! H5 \
- 不影响 UCenter 原有逻辑% H+ |; B; r% v8 d  M
- 保留头像简单裁剪功能(Cropper.js)3 ^, Y6 \# \8 U+ w! z, U8 k& p! l! T
- 仅新增一个htnl5上传组件
1 Q4 m5 `3 T. `) z% ?
6 b% z. A$ z7 G8 Q# M
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {6 t- C" |/ V  T3 `4 I8 C8 M% d. }
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    - u: {! U+ X5 B
  3.         switch($ext) {' E" l4 w& B  H% V# x! V: Q3 Z
  4.                 case 'mp3':
    * C5 V* r. N+ {% J
  5.                 case 'wma':. r$ R/ q3 ~0 L7 A4 p7 x- z
  6.                 case 'mid':' ^- J9 G8 [$ s  R/ O
  7.                 case 'wav':
    " m3 x* K. n! L" s7 T+ p; g
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';$ ]6 h/ P' P& l' K$ [1 i9 d
  9.                 case 'ra':
    0 y0 G# y2 T9 f
  10.                 case 'rm':1 u1 V5 q% [, z
  11.                 case 'ram':
    3 \2 _. [" ]% R( `* ?% X7 _
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';; M% f9 z+ q% _) [- v( L+ T) a9 [
  13.         }$ s, [8 z" e) X) T) r& E( U+ P
  14. }& _0 ~6 V7 {/ {/ R  k) G

  15. / e- f( ]5 N$ G" w9 H
  16. function parsemedia($params, $url) {
    4 K8 w; Q. g6 W$ Q. o4 D
  17.         .../ ^- ^( c0 e( ?
  18.         return parseaudio($url, $width);
    # U% E5 [3 j$ k8 j8 o6 Y) g
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件  w4 \7 w4 p* x: `
  2. function parseaudio($url, $width = 400) {
    , Z8 H  u9 J( L8 X: I- [  P
  3.         $url = str_replace('\\"', '"', $url);
    4 {# B; S% W- J7 l- _% T
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    ' O1 |7 Q$ H" T
  5. 8 j9 ]( S: N- }) M6 r% _$ Y4 m' X
  6.         switch($ext) {7 u. i4 s0 |% A
  7.                 case 'mp3':4 y8 a2 x) t" D& l
  8.                 case 'wma':
    - J3 N6 L; y5 P  [* |  X, D
  9.                 case 'wav':
    * P6 ^& q$ A. V" f) S. `
  10.                 case 'mid':
    " A: G' s6 x" ^4 N; V! L4 V" ~  [
  11.                 case 'ogg':
    . _, o+ _/ I- H2 {
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    / T9 j% z+ `1 l% d
  13.                 case 'ra':
    ! C& y: y0 Q; a5 C4 A) s2 u
  14.                 case 'rm':
    5 ?! J4 F' [3 h/ b
  15.                 case 'ram':
    " o, E9 n! i9 [- W+ M0 V3 j
  16.                         // RM 无法 HTML5 播放,退化为链接( M9 o/ \5 {, ?& _+ @* p# }
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ; }. B3 d8 ?& b
  18.         }, v. I7 E* U# F
  19. }
    4 f! y, x* v4 J# j
  20. * E* }8 ?  d+ b1 C' F9 a& }; u
  21. function parsemedia($params, $url) {
    % U; ?$ H) V* k/ A2 u

  22. / {+ g7 ]& Z  t
  23.         $params = explode(',', $params);3 ^6 K8 i3 M- ~" Y0 |

  24. & p) H8 i! v* [# ]5 T+ ~
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;2 E; P# V. t0 |5 k8 b1 l/ u
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;
    . L% Q2 [5 ~: I8 A6 g9 R. v
  27. ! \! h" l) |* k# g$ e9 ^3 D
  28.         $width  = min($width, 800);
    ! P9 h( F7 B6 \1 |
  29.         $height = min($height, 600);
    : ^$ r! i7 Q; z2 E- Y1 L* F. n
  30. 7 j: R; j4 {& Q( S0 q2 [) _
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));9 b4 g+ U7 D- O2 P) v1 g' R
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));1 K* a2 N$ V% m3 I/ w! Z# I
  33. ( l8 G, U4 K# |- ?$ K
  34.         /* HTML5 优先(现代浏览器) */
    2 j- P( {; ~" K1 e4 i) X8 \5 F; w
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {! Q* H% v4 H$ U" R! X
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">/ l$ Y6 {6 N1 S
  37.                                         <source src="'.$url.'" type="audio/mpeg">' m( O, ^0 d- j
  38.                                 </audio>';
    & ~( M3 @' S2 c/ W' t+ E
  39.         }! _  |* W1 O" C& [7 ^( {
  40. 3 V# d6 u0 Z# g0 r
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
    1 K# U2 Z2 a( b$ @' ^
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"7 x$ C0 L8 x/ i$ o& Y% P
  43.                                          poster="">8 F' n0 x! s% e0 o; T: x
  44.                                         <source src="'.$url.'" type="video/mp4">5 w3 Q9 c6 F! e3 q2 \  i( q
  45.                                 </video>';0 V" `6 O& T9 r) G( Z" ~/ C; D
  46.         }
    ( V: c3 S6 X5 m! n" Q3 D# ^. H

  47. 2 f2 t- \5 p0 m' j' l) g' d
  48.         /* Flash 逻辑保留(但不指望能用) */
    ) H+ w' p: v8 s8 x) a/ a- w% w
  49.         if(in_array(count($params), array(3, 4))) {+ f  z6 J- N& p
  50.                 $type = $params[0];4 F+ f* s8 Q  T! T5 p

  51. $ H  ?3 }6 F$ J
  52.                 switch($type) {6 |% p. v$ X/ [$ \* T- x" @7 O
  53.                         case 'mp3':
    % a! k/ M% Q: O1 N% X  W
  54.                         case 'wma':5 }+ K& y2 }1 g' x6 D/ ?" S7 F
  55.                         case 'ra':8 j* G' B' _! X0 T& A7 J" K
  56.                         case 'ram':5 A/ T, |- O1 R0 ]
  57.                         case 'wav':
    " o5 u2 Z! K& B/ y; c+ d, P
  58.                         case 'mid':- g/ v# ?( o) }. h
  59.                                 return parseaudio($url, $width);+ X4 s: [, N. l( z. U5 v
  60.   X6 J: M+ x1 \# ?7 |
  61.                         case 'rm':4 W6 S. U" r8 Q* `
  62.                         case 'rmvb':
    6 T: `; J5 t) b7 p5 [" h
  63.                         case 'rtsp':. M9 @$ ^$ H8 i3 L
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';* v; d; g# J2 Q7 X
  65. ( Z1 W8 c" Q$ B/ J; I
  66.                         case 'flv':
    6 n: _: B. d" m8 Q9 Y" d1 u0 [. J
  67.                         case 'swf':
    5 r6 F0 D* H; D6 y
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    9 q4 ^! L2 P) R$ R) x! K! ~  x
  69. & q9 I/ N1 X& l! t- Y& O
  70.                         case 'asf':
    ! g$ y& V6 }' R; S' ~$ A
  71.                         case 'asx':
      R3 R7 A. m& @; s  E+ }3 ~$ I+ B8 B
  72.                         case 'wmv':
    ; H- v% w0 G3 |1 A' Y( {. t3 N, n
  73.                         case 'mms':
    : ?" ~( ^- q8 ^
  74.                         case 'avi':, p, u# k% t! z" D  b" H
  75.                         case 'mpg':
    ; l6 W" ?' u  [# B/ Z6 m
  76.                         case 'mpeg':7 e( f" k; q+ h" o6 ~4 A7 O
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';% M: A0 M( v- e% j/ J

  78. 5 u; S7 G' ?! f- D# S
  79.                         case 'mov':! t" s9 H3 T- f( b& N1 ?
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';* D( V/ W+ M7 B$ L
  81. ) g0 H  _7 e& Y1 G3 h3 L/ @. Z
  82.                         default:: N' @" U8 U+ s, a% @
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
      t, }  I1 i( t" A  I7 X
  84.                 }
    * E7 T" k' S3 k' u/ s5 w9 ^
  85.         }  y7 d6 D! u* g# T5 b
  86.         return;2 P, Z- M0 W4 j4 u1 l
  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) {9 g& T* R2 i9 m8 ~" l. K2 x4 Y
  2.         $w = !$w ? 550 : $w;
    + k$ e* q* F1 N1 J2 k. ?9 @
  3.         $h = !$h ? 400 : $h;& v$ j+ @& b1 W# _& c
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);5 k6 Y3 L5 S3 [' ~, X
  5.         $url = $matches[0];9 s. ~3 ^! }& L- i
  6.         $randomid = 'swf_'.random(3);
    + c) ~+ {: v. h; Z
  7.         if(fileext($url) != 'flv') {, Z! U5 Q& U0 l3 p' k
  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>';
    5 }  b3 B2 q9 U$ `
  9.         } else {9 A! L  ~8 a+ l3 q% O" r) R4 i& P
  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>';
    7 b# ]) _! G# G- Z% O0 ~8 n
  11.         }
    7 B& _6 O! D6 e; ?+ p
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {4 \7 P; j) r9 P  E2 V* |
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';
    $ I6 z, G! O+ c% C, `! p* H
  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 15:02 , Processed in 0.036321 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部