【高州情】高州人深圳站

 找回密码
 立即加入
查看: 572|回复: 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身上,; G$ I' s# {- {. M0 p2 V/ P, F
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,
3 \  [- R* h* s* I虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。

- s% R, J. k: H6 l+ i  I! j3 o9 n. F0 Q& k: _/ ^
* A* w! j2 P* r/ P
" g; I' {3 ]4 M9 @
9 m8 @) G/ `. m4 ]
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
4 S+ }; g2 _( K! i==============================
* B: k* m( D+ }' T【目录结构】3 \) h" p! ?( {$ s& \' {( Z
upload/  }) N- P: P0 s2 J+ H% A4 t
├── html5avatar.php        插件后端接口(核心逻辑)
6 z& E9 _3 o% D3 `└── template/$ a+ j% D) @- P+ M9 k
        └─ default/5 {: ^( U. M: L9 x$ y; X, M
            └─ home/
& f. b  g! r9 R1 {0 ~+ j                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)
0 b7 X! }7 C4 c% T- R, S- d  k. }, n2 I  Y  \! b5 q
【适用环境】6 P0 ]+ b0 w$ @& O" Q" a0 n/ p
- Discuz! X2 UTF-8
( ~4 w2 P  S) d+ Z- UCenter 1.60 z8 k' I# ?0 ]4 }+ m" E" t% E
- PHP 5.6+( A- I# j$ n8 \6 R
" B2 p, f" ~( F0 v  |+ J
【安装方法】1 O) A  U" _* r( }) Y1 l% d
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录' [: H2 e9 r2 S9 T. w' L! Y! [: Z$ y
1 `' a4 M1 s  r2 F) t
2. 特别注意:$ M' Q! c$ n3 r0 V, A  n8 a0 h9 B
   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm+ f: r1 A4 T  q4 K4 Z+ ^( F8 n4 C
   (如果你使用了其它模板,请自行替换文件标注部分代码。)5 v( e$ a" L0 N4 Q1 Y9 s
' l# {4 ~7 C$ W  d' W
3. 确保目录权限:
& q0 E) T7 [$ B$ ^% Y  y$ ?   chmod -R 755 uc_server/data/avatar
5 D6 t6 M4 P: w4 S* |4 h3 m- ?) Z( U% D* P* t0 c/ r" Y* q
4. 进入:
, l& j9 X. v. r1 F/ z. {1 k   点头像进入 →个人空间 → 编辑头像4 P7 x1 w3 R- k
   即可使用 HTML5 上传
, [8 D6 _/ b+ h2 K' `* B4 k) l. U8 B5 u0 h
【说明】  f/ O, \5 r  T4 i4 E
- 会直接替换 Flash 头像入口
5 t5 t) Q/ B( Q9 h1 \( S% f- 无需安装、无需后台开启5 \- @& S$ j) U2 K; ^
- 不影响 UCenter 原有逻辑
3 S$ u% a2 _$ O3 U6 ]- 保留头像简单裁剪功能(Cropper.js)
% E9 w6 {6 H' R2 v- 仅新增一个htnl5上传组件

/ x7 E- x' Z/ Z) q4 T9 u. M
  I% ~2 }* K3 q0 I8 a& e
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {7 M) b+ Y! F2 E- J+ ?; ^8 o0 i4 f! n
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    - ?5 d0 e3 u! _4 A+ t. ]7 V9 Z7 K% X5 I
  3.         switch($ext) {) w" @3 @% d- _# c0 p& M% U
  4.                 case 'mp3':
    , v! c2 K1 [; }& r" Z7 p3 x, g
  5.                 case 'wma':
    ' C8 P9 I0 |7 A. H3 g
  6.                 case 'mid':  Q) P0 a/ x0 X
  7.                 case 'wav':7 D/ S( A$ ]6 V4 y3 |8 G0 g
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    3 J$ D1 g, F- u; W5 @5 \0 w, @/ N
  9.                 case 'ra':
      C- g- w( ^2 k7 B, T
  10.                 case 'rm':" W( o* f+ I  ?( N3 `
  11.                 case 'ram':4 N3 s" W1 x" B0 C8 n, ^; R: J. D
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';' A. U) j/ k+ P0 D3 Q5 S# k
  13.         }
    & b) [/ ]/ |* x1 k4 w
  14. }
    4 M5 [3 {$ F5 U% o
  15. ) q4 N+ Q3 I* q4 j7 m! F
  16. function parsemedia($params, $url) {# G- ]1 _0 z9 ^, B! ~2 }
  17.         ..., E- o4 G" }# B: N
  18.         return parseaudio($url, $width);
    + A5 y! `7 v: n4 W
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    * i6 K7 ?4 G2 o$ s4 i
  2. function parseaudio($url, $width = 400) {* t: `+ a9 x: _+ _* @/ S" s
  3.         $url = str_replace('\\"', '"', $url);
    : k# a" p7 Q% C5 g* _
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));8 X9 [# `$ e' _

  5.   G' k6 Y2 h! W3 E  M2 N$ X
  6.         switch($ext) {
    9 ]4 T/ [- D7 |7 V5 ^% z4 v2 g
  7.                 case 'mp3':
    7 J+ P% Y, y8 F5 t' o" S- N1 x6 R0 Y
  8.                 case 'wma':
    * m$ L( i" B$ p: I5 K2 B2 @
  9.                 case 'wav':
    * v& o1 Q" K( \( i' O
  10.                 case 'mid':
    6 D2 D! B9 b3 X
  11.                 case 'ogg':
    - @! c/ Q2 c* V% G) X
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    7 F. {! i/ a' t( I$ I
  13.                 case 'ra':
    7 l! V  d/ ]  j, R# x
  14.                 case 'rm':& g' D/ P+ p0 e# }- V
  15.                 case 'ram':2 O9 i7 g1 M, f8 c/ [: W) a
  16.                         // RM 无法 HTML5 播放,退化为链接
    - b/ U  `, w5 Z
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';  ^- `! m! P2 j
  18.         }( l/ ~4 r0 h, s9 M* P* _" p0 }
  19. }4 u( R+ ~* \0 z$ T. ~: g
  20. " x6 u  ^; T. [
  21. function parsemedia($params, $url) {- Z9 _& Y& c/ k4 ?% T4 @6 ^  o
  22. ; {0 {" D( Y4 j$ B3 A# z! q* w9 Z
  23.         $params = explode(',', $params);" X7 `  T* e7 ]- }
  24. ) X& ?  }) c' c- u
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;5 D* W! K3 m) D; [* M" ]" t) x& X
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;3 l6 j) }$ z2 l4 k- ]6 f5 D
  27. ! X  L5 _0 t6 `/ {! [
  28.         $width  = min($width, 800);3 \1 @% b$ n3 @3 ?* I& W
  29.         $height = min($height, 600);( ^1 E. G* E1 H9 L4 |

  30. % f5 c# p6 ^- n8 \! s& a# o, H  \
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));% T0 A( h, A; Y1 b) K
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));- d/ G7 A/ J+ h! i! x
  33. 0 A# K. j5 f; q  S! C" e
  34.         /* HTML5 优先(现代浏览器) */5 {& k. y/ ^- d) O" L* ~
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    8 M7 @  ?- A; ]; w. P* U
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">% [( }$ l& r8 v. M9 X5 O
  37.                                         <source src="'.$url.'" type="audio/mpeg">
    " X# C5 J: ~" Z0 K4 V! ^' P$ w
  38.                                 </audio>';+ T. m" l' X+ m' \- c3 [+ F
  39.         }
    ' }0 l. H" R" C1 f# K

  40. $ d6 b9 g# v' F3 b" R9 ^
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
    ! P* Y; A% |) C
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"; |/ t* L6 W! j6 L  i
  43.                                          poster="">3 P; h* j- j% w+ q- j2 K% J
  44.                                         <source src="'.$url.'" type="video/mp4">
    1 P& k! ~, M1 z. s0 }& s
  45.                                 </video>';
    $ }: ?+ y5 h. n0 i) m
  46.         }
    % M0 E; ?% g1 T! g& ]

  47. 6 Y/ s7 F3 c" v5 i; H& _4 u, x3 ^
  48.         /* Flash 逻辑保留(但不指望能用) */' E) N  T" F# H; U" I
  49.         if(in_array(count($params), array(3, 4))) {" H3 v$ E, T# J$ k, N2 j
  50.                 $type = $params[0];
    ! T7 s9 |  f* e& \: m5 i8 u

  51. 0 K$ b8 z" M9 R; n& |
  52.                 switch($type) {9 }# i. I  v2 v1 W9 i$ B3 W
  53.                         case 'mp3':
    7 ^8 i1 V; H) [# E9 y+ @
  54.                         case 'wma':
    + \3 i! ~. t" @, o* T/ z1 T' V7 D
  55.                         case 'ra':6 u: V9 s  w& @" u/ I2 q+ {. C
  56.                         case 'ram':. `; j) i' x& u- s
  57.                         case 'wav':; z% D% m8 q% A) x$ M  |% i; C, c
  58.                         case 'mid':' Z( \6 u) ^+ `( E: c- F
  59.                                 return parseaudio($url, $width);0 g/ ?1 Y6 i8 `! X! d

  60. ( v6 k1 F) b4 U" k6 a
  61.                         case 'rm':
    ; h2 I- q6 W5 p  Y+ {0 T
  62.                         case 'rmvb':, S" g4 k+ P5 ^; I
  63.                         case 'rtsp':! F/ v* O# E4 z% |) K2 A
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ; b& u6 P" O% ~+ a# T# O

  65. ! j; P/ F0 r; j0 h1 ~3 P" ?
  66.                         case 'flv':; ~+ J: D) Y7 k- O4 Z+ \! ?  K
  67.                         case 'swf':- f2 }' H4 ^) D: |8 P
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    . s8 ~. b" ]" c, c) b: ]/ \
  69. ! i& H- D; v+ Q: S
  70.                         case 'asf':7 u: A4 w! f$ T5 ]7 U3 x) s- V
  71.                         case 'asx':0 B4 b: S4 M* m
  72.                         case 'wmv':
    5 J( ]% L( n) T7 o" o
  73.                         case 'mms':( i( Y, Z: r) |  d
  74.                         case 'avi':8 J: Y6 W. {( R9 {
  75.                         case 'mpg':
    7 P* y% \/ H5 O4 l' P4 i$ I% @0 H
  76.                         case 'mpeg':% q% s7 ~- ?) f9 e
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    : M3 ?1 j2 e, V8 e
  78. 1 F8 L; f3 u  O4 c
  79.                         case 'mov':
    : e# d( O# T+ h' @2 p3 E
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    . q9 @# b3 d+ p

  81. & D( o) {( y! n* f5 {
  82.                         default:
    & I& D7 ^6 P! H" ]
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';! c& ~8 `8 p  r5 ~) {9 r
  84.                 }
    9 b) l! J0 s5 P! h( Y9 G
  85.         }
    * y) V0 S# I  @! ]4 M
  86.         return;+ L9 O  W7 ?% B9 e7 v6 i
  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) {
    * F7 \% t2 s- a3 z- c" Y: b, u. n8 \
  2.         $w = !$w ? 550 : $w;6 {. h/ j7 R( p. a
  3.         $h = !$h ? 400 : $h;
    , g" |  ]9 V8 X
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);$ J' Y% S" o' _
  5.         $url = $matches[0];
    ; f& K6 W. Y8 D7 `4 L2 A
  6.         $randomid = 'swf_'.random(3);7 ^. Y" a0 A) B7 z# Y
  7.         if(fileext($url) != 'flv') {4 c! \1 ]. n( E9 M# Q/ S% [" ^& V
  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 _2 B4 Y  `9 y. @+ ^) ~
  9.         } else {
    0 `) |* Q; w2 u9 c7 d* p; S* D
  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>';
    8 s( A8 n* u/ P& w
  11.         }1 D; t6 o! C# l) O+ r/ S# _
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
    0 A- C& e; C5 |
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';% L) l% l0 G+ f7 I4 U& m7 ]
  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-21 21:46 , Processed in 0.028557 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部