【高州情】高州人深圳站

 找回密码
 立即加入
查看: 593|回复: 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身上,+ h: U. f/ ]& |! N
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,
. n; m/ x1 M$ p" A$ o) N) f/ Y$ n虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
4 e) A! G# v, R% p' z; n4 U; `

/ p$ Q6 R' s3 Z" w1 W

: F. M7 T3 v: M# P5 z) H, B$ ^1 l9 }9 |, F. B. U6 y
# P; c$ U; n5 u
Discuz X2 HTML5 头像插件 v1.0  2026-05-05# x! w- A: q8 U/ x1 |
==============================0 k/ G" |0 u8 z5 v  L- E
【目录结构】
" H: ^2 \* L/ M% d$ hupload/
; R3 d* ^" O$ `9 j- [├── html5avatar.php        插件后端接口(核心逻辑)4 S9 D; U; A# c+ t9 A
└── template/- ]1 V  h' O$ c! j6 h
        └─ default/3 I6 O! _" j+ _5 c. C4 F! Q
            └─ home/
; B$ l. I, l" H/ \, A- o' B! P: n                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)- t- X$ d  |' y4 c! }3 \) G

4 \0 _1 T1 P2 G  ]; A【适用环境】
" S7 F2 U% s; `' i, ^- Discuz! X2 UTF-8
) J8 B- ^9 u, U( j2 P- }- UCenter 1.66 o( V! ]/ M6 ^
- PHP 5.6+. D& f$ N, O7 T/ Q( [2 S8 y
9 G- |) j6 X' H1 m4 u* F
【安装方法】  J0 ~8 W. l  v9 ~+ D6 A' ^, @
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录; N6 O# @( ~8 V5 `8 _+ K5 f( h
- [4 S3 F, h- D0 |# Q
2. 特别注意:+ |$ x6 J: }& a0 r! {2 T7 W6 n
   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm
7 @( O& }9 s( U) O0 h   (如果你使用了其它模板,请自行替换文件标注部分代码。)* \# `* ~& i' f- D% e' y

  ?( I# G" ^+ q7 P- W/ k; }3. 确保目录权限:
; @$ O' u- E) R% R8 ]) Y   chmod -R 755 uc_server/data/avatar6 u3 T% Q# [5 Q6 b
/ X: z1 ?+ m4 j; U% `! c* X0 j
4. 进入:& J7 n2 K8 ?* Z* U, B
   点头像进入 →个人空间 → 编辑头像. ~7 W6 F% i# b$ z) c! v
   即可使用 HTML5 上传
, z+ o4 Z  C/ y' y# m& k6 X8 o2 t8 u: a
【说明】5 Q2 X1 t% S# I2 E
- 会直接替换 Flash 头像入口! ~( O2 V3 q- \8 [" c
- 无需安装、无需后台开启' W; @7 W# p0 M7 H& G
- 不影响 UCenter 原有逻辑
7 ]/ ]7 `' x: M# \, q, w3 [/ P- 保留头像简单裁剪功能(Cropper.js)" E, f7 _1 ?, A: p6 i. k  [3 u5 S
- 仅新增一个htnl5上传组件
9 V' o" ^( w$ b' H2 l' ~9 x0 j( @7 U

1 h! T2 n; k1 g) @, Q" _; c. q
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {9 S2 f! `1 n; [
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    9 q0 T* _1 r% N! V
  3.         switch($ext) {
    * E: e2 I: [( N- n
  4.                 case 'mp3':
    4 Z) \- [  }% |: P) X2 P3 B$ \0 M
  5.                 case 'wma':( B) @  c. U1 j, h
  6.                 case 'mid':+ k( A: [: ?0 ?0 S* q) r& J1 W# M
  7.                 case 'wav':
    9 C% s% B* T5 B0 A# B; F6 V! [
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    3 `8 t1 K% y4 I( s* r
  9.                 case 'ra':# A6 X$ x* F$ H) a# J+ Y& I
  10.                 case 'rm':
    $ b# X: ~, d5 \3 E( @
  11.                 case 'ram':6 W* z& p; q# [0 }) z4 f
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    2 o; u, t% t! x. M; u$ ?" I! A5 l
  13.         }6 N: {: Z$ G# P: A2 ?! F5 H+ Q
  14. }& }$ z6 @% W% E0 j. E5 A4 ~3 i
  15. $ O5 s9 U0 W. J
  16. function parsemedia($params, $url) {
    $ M& c" |# ^% a5 _# j
  17.         ...+ h* F% T( w3 U* b* ]; X
  18.         return parseaudio($url, $width);
    % r" I1 D8 f3 V; n" r) j( D; Y
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    ( {% N0 |$ F6 z2 A; i
  2. function parseaudio($url, $width = 400) {3 P( G1 \8 N. S& g  \
  3.         $url = str_replace('\\"', '"', $url);+ r4 K1 q" c1 Q7 l
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
      e- s, V2 f3 L
  5. # N6 P  @' Y6 N% h: `/ J% l' c
  6.         switch($ext) {
    + k1 t3 `( H, }/ N6 y' A: H
  7.                 case 'mp3':" F. Z. s% r3 R! Y) J" r8 |7 Y
  8.                 case 'wma':
    & s- E; B, z1 o! ?$ C6 r4 V" S
  9.                 case 'wav':
    7 h6 }2 d$ T! S# X9 m
  10.                 case 'mid':
    . o4 \" n% ?) I: ]9 @: z
  11.                 case 'ogg':8 p% X* L$ l/ E, ?( j
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    ' n+ u. `2 X1 `8 y* A- x  {
  13.                 case 'ra':( h: I. @8 {) f# D/ G, h: C
  14.                 case 'rm':
    9 r4 v. n1 \1 |1 s5 V
  15.                 case 'ram':
    : I" L" n0 s1 o- Z) K: y& X7 o
  16.                         // RM 无法 HTML5 播放,退化为链接9 O; f. Z$ D# k- y
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';! ?0 p5 J: M9 y
  18.         }
      a3 U$ {; _* Q& b+ G# k! S/ R
  19. }
    - i7 a' \8 B8 S0 U5 p2 o8 L5 B

  20. ; x: P6 w) F+ ]$ N8 w$ c2 i. q
  21. function parsemedia($params, $url) {- g9 R% t2 v/ N, K% ?6 A5 m5 _: _! `

  22. 1 H: m, R( g% }' f3 y
  23.         $params = explode(',', $params);
    4 t+ X0 s" B2 B( F: y: L; T
  24. & M7 x: O+ j. z  X( a
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;
    9 Q" h4 S& M5 e! F7 w. ?8 y
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;# V  w( ~7 G/ V( v" Q. p3 ]

  27. % ]. \/ f* Y. x( L: M
  28.         $width  = min($width, 800);
    & R3 N& v( R# _1 `- X
  29.         $height = min($height, 600);
    ' k- m" j7 `; ~. b# z7 H9 I3 y" h
  30. , C1 l5 \4 l$ f4 r
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    $ h6 v2 M! N- _$ S1 u, y
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    ; v* e* q1 I* K4 O( b; ~

  33. 4 T$ n( w( y5 C1 ]0 W% b. {
  34.         /* HTML5 优先(现代浏览器) */& q  {' }# S* y$ w
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {) a3 w1 w/ k, ^5 e" @: v- G1 ]# N
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"># c) V4 e; ]3 y4 ?
  37.                                         <source src="'.$url.'" type="audio/mpeg">4 H9 l8 i1 y: ?
  38.                                 </audio>';
    ( J3 Z* ?* S4 d* C+ u/ ^% L: h  ~
  39.         }0 A( D9 S$ P0 @0 u: b  x1 O

  40. # F$ l+ v3 I9 [4 m) @
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {; Q8 C% K3 }  c$ A, O4 k/ j9 ^6 R, _
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"' [, Y: M$ ]2 Y. z, \6 I1 q% v
  43.                                          poster="">
    ' {6 q0 t8 F+ H4 M
  44.                                         <source src="'.$url.'" type="video/mp4">
    % r2 M# w" _2 N5 g0 {
  45.                                 </video>';4 Z5 {  O! h9 s& E% ^0 @1 ?
  46.         }
    - n( P/ L3 |7 Z- S- e0 e* q

  47. 8 H" l& c, F- W7 T4 F$ e, T
  48.         /* Flash 逻辑保留(但不指望能用) */
    7 s( E; Y$ G4 ~0 ?: D
  49.         if(in_array(count($params), array(3, 4))) {2 W/ n7 p9 }+ Q
  50.                 $type = $params[0];! O9 r  ~# k2 e' l

  51. * U3 O$ `; l, P5 ?, i8 V" J
  52.                 switch($type) {
    7 B* T0 @. }# T. U
  53.                         case 'mp3':* Y+ }" L$ a  _; d# ?" o* Z
  54.                         case 'wma':
    & B6 y/ u7 F1 i# x
  55.                         case 'ra':& b4 U/ V8 T$ ^8 W3 r3 H
  56.                         case 'ram':
      [9 J; r4 R$ |# `
  57.                         case 'wav':
    * z6 C# d: v% P5 U
  58.                         case 'mid':
    + y" t. M# \3 O* K+ i  `" P) }
  59.                                 return parseaudio($url, $width);
    5 [* W$ x& }) g) G% e# C9 T2 a) H

  60. $ a1 G, O2 e% }: k/ v1 l- U
  61.                         case 'rm':1 m0 P; Z/ f: W
  62.                         case 'rmvb':
    & a& o7 m8 g+ f8 n* {9 }' Z0 W) L
  63.                         case 'rtsp':2 @' n; O' k# G) `5 N4 ?2 T$ j
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';. R  G! S' i* K! U
  65. 6 J" q. S! L& s9 [
  66.                         case 'flv':
    & ~! G1 l1 a4 p; D- X3 d# x
  67.                         case 'swf':
    * _5 }0 h2 h0 i0 c6 b
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';& N4 V2 @) Q5 |7 G$ r2 b
  69. # {" o3 }0 o- [- N: G" d6 r; ~& K8 l
  70.                         case 'asf':3 q- C* N# f0 X5 Q/ }: M+ Z4 h
  71.                         case 'asx':5 ^. H/ v! ?6 x7 J$ R  a+ {5 o
  72.                         case 'wmv':# M1 A0 ]; M1 q  I
  73.                         case 'mms':  t  R6 E' D" ]0 q9 |  W) k
  74.                         case 'avi':
    + u0 P1 f+ K# {" C) m
  75.                         case 'mpg':
    . a# }, s; g9 |$ \6 F, X
  76.                         case 'mpeg':
    : t' z. v1 b+ m* v# B! F
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';, M3 n) e. C' _! u2 r/ s
  78. 4 h0 r% J. @9 E% i4 b
  79.                         case 'mov':
    * C1 T7 @  y& [
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    . b+ k) h/ y8 k' {

  81. ) }* m8 f1 p' n# L, y9 n6 w) g
  82.                         default:
    1 o; `- ]' m& I9 L4 p
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ! J4 N) r6 G: I* r4 Q
  84.                 }
    9 M# X  H( S" R* D
  85.         }
    - }! H3 Y6 G% z
  86.         return;
    : u7 S# t5 J- O( {
  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) {# o) f1 m4 k2 C  t' y
  2.         $w = !$w ? 550 : $w;
    : g9 c$ J8 D* d, ~" `+ X7 y* Y: j
  3.         $h = !$h ? 400 : $h;
    ' o# |) Z9 \7 w5 _  J7 W7 {
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);
    # f, n  o9 o9 j
  5.         $url = $matches[0];& H7 q+ M2 G9 v0 F
  6.         $randomid = 'swf_'.random(3);
    1 S, o7 r+ B) E4 R3 F2 M6 B; @3 P
  7.         if(fileext($url) != 'flv') {
    ( E5 t+ g) O, Y. a. N& G
  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>';" O. y" y! h" P
  9.         } else {
    0 n$ I: x( b% ?% c" k1 g
  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>';* c% Z" F& k7 |& @2 ^* q7 r* J
  11.         }% y6 A$ g. b+ h) |
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
    1 O9 Y; _* s% o  L5 ?+ f) m
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';% R/ H! e3 p$ r. l! J( |/ ~
  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 10:53 , Processed in 0.032130 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部