【高州情】高州人深圳站

 找回密码
 立即加入
查看: 748|回复: 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身上,
  N6 s8 {/ K% ^# j! o  ]2 U" D用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,# ]( C0 ^  }; B
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
* l% f8 a- {5 e: Q$ e
$ `1 y+ C/ G: s3 w+ x; n% q* Y
$ l( h1 m6 T4 B) g

! ^1 n; g6 a8 H# `: e# d. V
; n8 k$ V- x4 j5 M. _* }, \
Discuz X2 HTML5 头像插件 v1.0  2026-05-05) q% d2 i) t9 i4 t
==============================0 ]1 A" l9 y8 ?4 V
【目录结构】
6 Y/ f, z" m6 Q7 K6 k8 M! z' qupload/
. ~! @4 f; x; A/ l8 g├── html5avatar.php        插件后端接口(核心逻辑)
  p! M0 u5 W% V+ `" F4 A4 C  a└── template/
+ |+ b; C/ h; Q/ x. j        └─ default/
" g# D4 h( F7 |            └─ home/5 e6 u  k# T9 u0 L3 d
                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)
6 U. _& d9 d5 p  ~" P; C
1 o! I0 y" n6 S, w1 e% I$ Q/ t【适用环境】2 c9 G) @+ I. d) D) g2 v
- Discuz! X2 UTF-87 _$ z6 E5 l, l$ w: k
- UCenter 1.6
6 X2 Q& j+ R2 Z: V- PHP 5.6+
1 ?  g( U5 I( k% r% k7 G! }7 T' U* d% N# ]
【安装方法】$ Y( e! A* y4 B& J
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录( p/ M3 a8 Y. @$ }% X7 ?" a
9 k3 P+ B* V1 H; t
2. 特别注意:+ O+ F8 ~  u4 n5 W4 ?
   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm
* H$ l2 G; I: \( l$ A: j& R" S/ [   (如果你使用了其它模板,请自行替换文件标注部分代码。)5 X/ A) G) B" N, C( v, J8 Q
+ e+ Y8 k' Y0 [4 K
3. 确保目录权限:
2 {) d; U* O4 f1 w$ W9 p   chmod -R 755 uc_server/data/avatar) g  g9 p; N  W5 \1 k+ H+ x

6 [6 l7 u7 u! V4 Q4. 进入:; d5 N! A1 R: J9 j' y+ P
   点头像进入 →个人空间 → 编辑头像+ f7 D3 L8 L& v  m. C. ^: }' q: a% @4 q; x
   即可使用 HTML5 上传
+ I6 I; a( V& T# [
* U5 o( \7 H% t) Q; x【说明】% j6 `2 J3 P; q$ @) g
- 会直接替换 Flash 头像入口
( O0 V$ R7 T  u: Q0 [6 X- 无需安装、无需后台开启
- x" C7 y! w  T% y4 h9 C- F- 不影响 UCenter 原有逻辑+ F7 B1 J6 R! A
- 保留头像简单裁剪功能(Cropper.js)
8 M' ?* A' p( Q- F( F/ u$ T- 仅新增一个htnl5上传组件

" L& g  D+ H6 A' v% s4 z7 C8 @/ o9 o, d0 S5 F
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {
    - s" a5 T6 e0 q7 v
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    . O/ s  O; o8 W/ Q0 [: {% M, x4 q# n
  3.         switch($ext) {- y$ f/ g& {; z5 w, q
  4.                 case 'mp3':
    7 T. M- K1 a* Q0 j" Z- c/ K+ r
  5.                 case 'wma':% X8 \. ?" y  s4 ^
  6.                 case 'mid':' b# v( j2 |  y
  7.                 case 'wav':
    . A3 t2 G* x0 u1 k# @
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    7 Y7 g0 X% Z7 P9 z6 V4 y  Y8 r( G
  9.                 case 'ra':
      G. `! O: N6 y5 I
  10.                 case 'rm':
    . @5 r- V5 O9 Y( u0 v1 V/ I+ T& a
  11.                 case 'ram':% k5 |0 D+ N  E* I- G
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';1 ?5 ^  X3 D1 _8 J2 [! G. M
  13.         }* t% f$ G! S; F2 `/ x, p7 q. D
  14. }
    2 X) @$ |" |- P; z4 V- P# X, D

  15. / y6 t  v: Y7 I) H& |
  16. function parsemedia($params, $url) {
    9 z4 r2 v- z2 L$ }7 c5 d1 F4 ^& _, Y
  17.         ...* l7 y7 C1 v/ O# c
  18.         return parseaudio($url, $width);& |! J, j9 ~6 R
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    , M, H, U% O9 i/ G) e- f; v
  2. function parseaudio($url, $width = 400) {
    / O0 b! m: a: }/ v4 z/ X
  3.         $url = str_replace('\\"', '"', $url);5 G% M$ _# e( x6 M: B
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    3 L$ Z. y5 I$ [

  5. . N/ U& Q# b( E; ]! Q3 J
  6.         switch($ext) {6 M! K) I) Y( P5 U7 ]
  7.                 case 'mp3':+ Y) n0 b/ j% z2 D" F3 z6 B
  8.                 case 'wma':' i$ j& b) q: d0 K. {6 o# V; R9 s
  9.                 case 'wav':( V7 n' X6 N: |& K& Z
  10.                 case 'mid':
    ; S& R  T/ r" b/ ^2 u3 A
  11.                 case 'ogg':
    % s' y* D" H9 X# K1 {* R& ?
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';) K0 \* x( ~4 u) P. x- y+ y9 @; s' R
  13.                 case 'ra':
    ) p* P" u' l3 T. B7 b: {
  14.                 case 'rm':9 \' C7 }$ @) h6 r  h+ m* ]' }
  15.                 case 'ram':
    / C: Q0 O$ z( R$ E
  16.                         // RM 无法 HTML5 播放,退化为链接5 S: R3 T" u2 \) w1 K
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';0 l" v, d; \" F5 N6 |) h1 ^4 s
  18.         }, x/ j1 z' A5 E8 A+ B
  19. }
    2 D7 H0 i3 N, E1 c0 h: E& f( q

  20.   y3 |1 G; n7 G* Z
  21. function parsemedia($params, $url) {7 W4 K* ^* G! O8 u" V

  22. ) }7 j) T4 f2 r5 J! W
  23.         $params = explode(',', $params);6 t2 ^. W0 ~9 l  F9 r3 e
  24. 6 }" K2 h2 w+ E$ P) n& y' f: f
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;
    ' R- \7 v7 r: G& v5 w
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;# N/ U3 O7 M! g9 D! L1 j" M5 L

  27. 1 R" }! F" E+ p) C" L2 `1 `: J
  28.         $width  = min($width, 800);
    ( J) r& s: V/ `
  29.         $height = min($height, 600);
    & u$ q2 }  r- n( n

  30. 1 J% r4 O4 I+ f/ @  K7 m
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));9 @0 f2 {! x5 O( ?/ b6 L9 n
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));- p# P, A2 u! K* d3 B' i% m. y
  33. : w* I) s# p$ Y
  34.         /* HTML5 优先(现代浏览器) */
      ~$ Z5 p  b: I. Q' K6 a+ z! C/ `
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    2 {7 w: N; K6 h! Z- N  U
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">) h$ K: u  O' _0 _) @+ P! y
  37.                                         <source src="'.$url.'" type="audio/mpeg">
    5 `0 ~! P* M0 X7 Y, L4 R2 n: O
  38.                                 </audio>';( W8 `0 y* E3 Z2 ?* Z/ z8 v* y
  39.         }1 j" n* j( k/ S6 {$ T
  40. 1 a3 G/ Y- `9 x* E
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {3 m2 r# z7 B0 {! u9 y
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"
    * A# _& q* z" _9 _/ U
  43.                                          poster="">( {+ c7 B7 `, ~  D
  44.                                         <source src="'.$url.'" type="video/mp4">- X. t$ g. s. e) }7 o! `/ n
  45.                                 </video>';# _* i: {, d- C3 s
  46.         }, s  A; U! q! V
  47. 7 j3 \; ?; ]! f. X  e
  48.         /* Flash 逻辑保留(但不指望能用) */6 }# h3 u; e/ D. ?7 K6 G
  49.         if(in_array(count($params), array(3, 4))) {
    & `" q$ _7 P' F; @" g) m
  50.                 $type = $params[0];* _& ]1 k$ \; [6 P- s% g0 k3 v

  51. 4 K4 n% }; V# ?3 B
  52.                 switch($type) {
    4 s, M  K: S  D! _& x8 v# `3 g+ p
  53.                         case 'mp3':' Y6 j" s0 j- o/ y' V! Y
  54.                         case 'wma':
    ; p/ K. n, Z: S, D: ^5 x8 e
  55.                         case 'ra':
    6 t2 i# d$ o" K2 d2 f  Q
  56.                         case 'ram':# I! p8 T/ ~% k
  57.                         case 'wav':7 D- K. c* M1 w! a: Q* E
  58.                         case 'mid':) g" d" t4 Q% k$ U2 ?+ x
  59.                                 return parseaudio($url, $width);( T! D. {; @- k9 {* ~5 t* B* b

  60. * q, D4 O- p  m% D/ K
  61.                         case 'rm':
    4 L7 k4 }- l4 P4 ~
  62.                         case 'rmvb':
    % S0 z' k: d2 l4 ]
  63.                         case 'rtsp':
    - O5 i/ k- }; x2 e  o& |9 h
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ' _5 ]+ i$ t% ]& W8 A9 k

  65. % I& W1 D  _# D" ]
  66.                         case 'flv':( w( r: X: p: L8 `( a# T9 R$ |
  67.                         case 'swf':8 ]+ T8 Y. W% W* B& q
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';7 T6 s' _3 v6 w

  69. : i9 S5 d* I) W. N
  70.                         case 'asf':4 b4 p( F0 p2 y0 N9 ~
  71.                         case 'asx':
    / p( f  I( d* ^
  72.                         case 'wmv':  M6 I3 V& D3 r2 _& _- Q1 i
  73.                         case 'mms':
    ! ^- r$ L, F% |$ L8 {5 D/ a: |
  74.                         case 'avi':
    1 K8 n. L! D) c& {7 L9 {! \5 I
  75.                         case 'mpg':
    ( l" K  t8 U: N; k3 S# @6 X
  76.                         case 'mpeg':
    3 w7 S2 [% O7 z" N# ^
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    + t$ r( n9 ^2 N8 P) |6 @

  78. ' b. \5 Q3 ^/ U; K/ x" P7 t
  79.                         case 'mov':! |7 j1 @6 ^! z/ n* @& N  f
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';( {# ]% ^! d/ S- s" W
  81. & F7 r# C7 ^) z
  82.                         default:! d5 \1 ?$ L2 w4 k
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';, o7 X# s# e) w' c: G3 ^  L" i& N
  84.                 }7 T& N+ U/ q3 E  Z
  85.         }4 z* F( t( t0 R) l1 B! W0 G
  86.         return;+ k6 Q! T  y" c! T* H
  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) {
    ' s$ u5 T% M5 w0 b" s1 c
  2.         $w = !$w ? 550 : $w;  w1 u& e/ a/ B' a0 L( p' o* |
  3.         $h = !$h ? 400 : $h;6 d, x: V0 X: B3 a$ C2 C9 i% b8 G
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);" N5 @! V2 ?. ~& M
  5.         $url = $matches[0];
    ( ]6 f' F; E+ L) P. g
  6.         $randomid = 'swf_'.random(3);
    $ A& z' V: O6 f! Q( ~* b+ K7 U5 J
  7.         if(fileext($url) != 'flv') {
    * i' L2 q- x2 r: E
  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>';; V+ }; a5 N6 o" Z1 V( B: H1 g
  9.         } else {
      G3 G! O* Z' y
  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>';& [5 B, c4 L& t0 i4 S; Z9 O. `  A
  11.         }! }) i8 w8 l9 E8 \% P! J% w" S2 R
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
    6 @! Q5 W9 M0 y' a
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';
    6 A3 @- U& S# O5 b8 S
  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-6 10:26 , Processed in 0.030280 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部