【高州情】高州人深圳站

 找回密码
 立即加入
查看: 591|回复: 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身上,( \& D: {. L: t0 y" L5 f4 g* N7 I
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,
2 i, I0 [4 ]: x' U虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
9 z+ ~1 x2 ?2 A7 z' T9 P$ z- u0 q
/ Z( C* N& s) R5 K6 t; \
# m5 Q1 A9 n: S' D
0 A8 @  T: e5 N* q- k3 W% q7 F

7 W+ x1 y7 _0 \; Z/ j+ Q
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
# v. Z  O% j) o==============================! g  }& j& T  [* U* L$ M. s5 A
【目录结构】
* f; s+ Y7 m; n* d0 ]upload/
1 {& [/ B' S3 j├── html5avatar.php        插件后端接口(核心逻辑), e6 `$ D0 f0 P0 n( k0 Q
└── template/- {- d- E  U' q/ a8 w! [
        └─ default/
1 i: C! D6 `$ p: U, K5 ^8 D            └─ home/
# s; O# k7 Y% t( O                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)7 K, X0 h" h/ I$ i

& Z/ c' H6 v+ ^【适用环境】
) m4 h( t& t' q0 `8 b- Discuz! X2 UTF-81 d# V+ u+ l0 I( V; `
- UCenter 1.6) o0 k& d: r1 U: Q* q( [) r- @) H
- PHP 5.6+6 n' ?$ v1 Z* H% ]
; }. @- Y: |" \8 c( e8 m5 E
【安装方法】
! x3 q5 B$ ]/ D: i2 A! h1. 将 upload 目录下的文件,按路径覆盖到你网站根目录
* V  q0 E, B9 I' I5 x7 Z
4 O2 ^& d" a+ ~/ ?2. 特别注意:% @  l- j& B( \) _/ c
   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm# ~/ B! B0 e8 O0 p% m$ b* b
   (如果你使用了其它模板,请自行替换文件标注部分代码。)
1 S" w8 Y" U- X1 ]4 Z* F4 e4 {
# l$ E- P& \4 e4 }4 [3. 确保目录权限:
/ O$ k9 r) ?6 z; w) j  V+ a' K   chmod -R 755 uc_server/data/avatar: f( d' W) u7 m
: T# l! v$ l% l3 r% o: |
4. 进入:. {: n! r; a4 |1 _. n
   点头像进入 →个人空间 → 编辑头像
# }# U) {" d; w2 x. x   即可使用 HTML5 上传
1 O% m: t- V5 I3 r! l" k) J% P
0 n% |$ B" F1 l& L# g2 ]- @6 y, B【说明】
) v. V8 S) m$ g1 ]0 Z( O- 会直接替换 Flash 头像入口
! N+ T* I, E# G7 i, R- 无需安装、无需后台开启5 e* `4 \5 \) W3 ]
- 不影响 UCenter 原有逻辑
' m, r( V  e  `: m- 保留头像简单裁剪功能(Cropper.js)
8 R: u8 _2 q5 b$ @+ M4 h- 仅新增一个htnl5上传组件
; M9 c9 l" y% v1 k% w% ~4 K

$ Q% s$ H1 D$ ^) B3 |; u! R6 i
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {8 X& |. J" `) l9 B4 V% l4 o- l; G
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    # _9 u# ?  @' ]+ d# q$ D- A, _, ^+ U
  3.         switch($ext) {
    + C- }9 Y5 r6 P
  4.                 case 'mp3':( \7 z8 R$ a( }
  5.                 case 'wma':
    ! g6 f( ^9 P' I$ W- K6 N. z
  6.                 case 'mid':
    ! M: A# g9 @2 R7 o0 d: B
  7.                 case 'wav':
    9 k4 k+ \$ i, |2 z/ M2 o
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';9 B4 U( h" k/ d) Z: ^5 ]! ?- c
  9.                 case 'ra':
    $ M7 a8 U6 Y0 m- ]/ Z1 Q
  10.                 case 'rm':9 x: L7 l( B2 F
  11.                 case 'ram':+ C# c( l4 n- d, N( \6 e- P
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    ' O8 [4 g! C, S6 Y8 H( N" i
  13.         }. ?& Y& I8 K, M( ]  A7 \# w6 g3 B
  14. }7 x: s: s0 l4 G. q) {8 r$ b# f
  15. 4 |1 J; ?  y+ p1 X' Z8 U" U
  16. function parsemedia($params, $url) {
    ' d  `, b7 D) j% M2 N1 Z
  17.         .... b! {9 L6 U' M" a# P* u- P
  18.         return parseaudio($url, $width);
    - S" u. N% G& q. u  E1 g5 o
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件9 p, L% B! g% w, |7 Q
  2. function parseaudio($url, $width = 400) {: P5 L) g9 k3 a/ J+ X* Y' u
  3.         $url = str_replace('\\"', '"', $url);7 g( a2 H* e  Z+ Y) _; v
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));/ w8 X; M1 R9 o! X( g. p- U
  5. / T0 Y& B% Y, _9 k% @9 G0 u
  6.         switch($ext) {* C% r6 e! K3 Q9 [. h) a2 L9 E
  7.                 case 'mp3':
    + o5 d  k9 d- |4 D" h9 ^
  8.                 case 'wma':
    , D8 H$ {9 j" [4 o
  9.                 case 'wav':
    / Y% v( M" q1 s1 x
  10.                 case 'mid':
    ; [0 a/ h; Y8 _
  11.                 case 'ogg':
    6 N$ U$ ?5 d# y- ]; c
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';0 A$ T. C0 L* S) m3 ~1 a
  13.                 case 'ra':
    $ s$ b/ f% f1 d( I
  14.                 case 'rm':/ s- Z6 }7 X2 ^) S9 P
  15.                 case 'ram':
    $ e# C! S& X' D6 N
  16.                         // RM 无法 HTML5 播放,退化为链接
    : X2 z+ N6 b2 A! S) e5 H& o
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    8 C5 M% F2 I: f2 N( X% D  Q; M
  18.         }
    3 Z$ a2 B0 m- I& G. |( p) Z. b# g
  19. }
    " v; p1 S5 i. O9 P3 m0 V$ X+ o4 |

  20. ; g1 a6 S8 y: L& p1 c' b4 @7 c# s
  21. function parsemedia($params, $url) {
    8 \+ ^# d% Y+ L' g& B
  22. , W1 ~4 k! i) H6 t3 B$ u( ~1 X
  23.         $params = explode(',', $params);5 u5 G) O5 f+ u$ r+ a2 o

  24. 2 o7 o6 Z, Q' |3 |4 l5 s/ {7 o/ a
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;
    - K, S" r! {' s
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;
    ' J) v0 _1 B( U- o. O; H  Y

  27. $ i5 l, N% c: U" E* M9 B; D
  28.         $width  = min($width, 800);; Z" |3 [* t, e* I3 z* w8 z6 b2 |% l
  29.         $height = min($height, 600);
    , L6 X7 T  J% ~, w  i

  30. 2 Z: e, B; Y4 F- Y% n: Y) b
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    3 D1 ~  \5 I- M: k& P
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));- V; o  @4 X' v$ {7 o

  33. , n4 f+ w8 `/ S( [
  34.         /* HTML5 优先(现代浏览器) */
    5 D2 v1 r. d# A2 E1 ]# x' C
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    1 B; d! O% q3 J6 R
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">, V4 O8 ]5 o% u: n# s5 d( V' R
  37.                                         <source src="'.$url.'" type="audio/mpeg">
    4 Z/ t! i- D, J& \; j
  38.                                 </audio>';  j, {) {9 Y( Z# o  O. F
  39.         }) Z8 M# d* H7 X* f
  40. 0 S8 i; z8 R) e$ H, _. N) c$ l
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
    3 Y! v6 @0 p6 j5 t# ]
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"
    " r3 V5 S" ]2 H4 I0 z$ s
  43.                                          poster="">
    ; M* O. y) r9 Z3 l7 }9 N
  44.                                         <source src="'.$url.'" type="video/mp4">
    7 D' E/ U  W  u6 X9 [8 k
  45.                                 </video>';
    ! v2 W" @. Z, v: |5 {
  46.         }# o6 x- h2 r& F( K2 \& F

  47. ' _+ R; ^# d3 v- X# l) H) K1 F2 G
  48.         /* Flash 逻辑保留(但不指望能用) */& t; i2 q/ y$ K! t& m/ L
  49.         if(in_array(count($params), array(3, 4))) {+ V3 e$ z/ G+ L$ h2 F
  50.                 $type = $params[0];
    2 f! ~2 \# k3 ~/ N! q/ K/ ^" q
  51. , d$ ]0 e5 v, @# Z1 F
  52.                 switch($type) {
    * }9 t# p5 G% `3 {2 H% F4 v- \, z
  53.                         case 'mp3':
      S9 v0 c4 D/ m/ l; Q2 \
  54.                         case 'wma':
    9 ^  u. H) W# h
  55.                         case 'ra':
    , W( o1 H7 v. B
  56.                         case 'ram':
    8 R' \# |# @5 d2 Y# Q+ U$ I
  57.                         case 'wav':  N4 |' A0 z3 s6 w
  58.                         case 'mid':
    : o3 q- O4 a3 q
  59.                                 return parseaudio($url, $width);
    : Y% Z0 O& T9 f; I3 R5 C: e2 E: {
  60. . j4 E; n9 g& R- I9 c7 T
  61.                         case 'rm':
    * \1 R1 Z0 u3 g/ |( B' R: V
  62.                         case 'rmvb':
    ) W$ M1 W0 y4 `& ~
  63.                         case 'rtsp':
    ! ~; s5 S7 W; X8 C# @9 q
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    2 i1 g# f" C4 P, n* ~6 i9 L
  65. 4 r4 u& ~$ y2 g  ^  [; ^1 ]( g
  66.                         case 'flv':/ Z1 W3 t6 r: r# J) \
  67.                         case 'swf':
    8 r2 @. T9 g% V8 i, F
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ! e3 n  n# S& }3 F7 }& r

  69. 5 z2 f  q& l8 R( y. I9 t! N/ o
  70.                         case 'asf':
    ' L4 l0 h- Z1 V
  71.                         case 'asx':
    7 M% d) N; E7 G
  72.                         case 'wmv':
    6 F2 c! T. r, q
  73.                         case 'mms':
    + `' Y9 z, E9 W
  74.                         case 'avi':" F5 H/ U* X( _
  75.                         case 'mpg':
    & H4 k2 U# `; _7 n: S- M  ]
  76.                         case 'mpeg':
    : z  ~; B9 ?8 `  s3 Z( q2 j  t# x  p
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';, u: {% z& w/ O2 q0 b' u

  78. 6 B" t% n: `2 Q
  79.                         case 'mov':
    + F7 ~9 A. o( E; y! E, L
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    * Z' R# a. R1 B& _& f
  81. ' I/ d+ D% o6 m: D: A+ N" a
  82.                         default:' n* H4 [% r3 q- j; z4 B
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ) x3 V9 f+ m$ I
  84.                 }5 ?* x2 ^6 K0 O
  85.         }' v/ n2 |- f6 g. f
  86.         return;6 f9 j- R  @% p4 D, Q! J
  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) {
    , i/ j4 n: E2 }7 g% ]$ [* d* T
  2.         $w = !$w ? 550 : $w;
    8 U0 i3 z7 y: S) E  p" R
  3.         $h = !$h ? 400 : $h;# _8 _9 ~8 I2 q8 A
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);) F# F/ u9 l& L$ y0 {7 u) ]  l
  5.         $url = $matches[0];
    . j% S; g) z, X! l$ c0 Z5 V8 w/ b
  6.         $randomid = 'swf_'.random(3);
    ' z" r# y; a/ n2 I) a$ S7 m
  7.         if(fileext($url) != 'flv') {
    0 J9 x6 P( Q3 U6 i% X9 Q/ w
  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>';* h/ ?+ g0 C8 Y3 b# J
  9.         } else {
    " w1 J$ l5 M3 f$ P4 B9 m
  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>';, ?3 V% ?$ e0 n, q9 ]$ c& Z
  11.         }
    7 i" x% G( U: S
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {% q% _4 z1 p, u% B4 A: k) p! Q
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';4 D+ A1 H$ v6 `
  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 06:22 , Processed in 0.025846 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部