【高州情】高州人深圳站

 找回密码
 立即加入
查看: 577|回复: 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身上,- I, t# r9 |0 q0 L3 W- b, A/ F
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传," V$ s8 K4 ^6 t3 G; e
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
  j; P6 b. ^. W6 Z6 s

" ?; `2 J, f% D4 ]' w9 q

1 h4 A& R7 l0 W: Y( U3 [4 R; @% {+ A. V2 `5 E
$ K! o: e: [+ @, g4 n, C0 n
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
/ d  K! }( ~. ~$ }==============================, R, y9 B+ x+ y, H; a3 G
【目录结构】2 T" J! b: v) Y# F# A* y5 F6 O
upload/3 i2 i+ q. Q9 E! A
├── html5avatar.php        插件后端接口(核心逻辑)0 g3 l- t6 H% a/ X
└── template/
, q1 L/ j  K0 D* d  P) i1 z        └─ default/
6 Z2 E) a7 y# D            └─ home/
8 f" s1 O; d0 `8 p9 _- d- X                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)
, l3 z8 m& r. v% M  H
* C: B/ R; V  n; [! P【适用环境】7 U! w+ p: R! f
- Discuz! X2 UTF-8
  x5 j( ]9 X+ p' c* R- UCenter 1.6
  D& Q( t2 C& S; o2 Z0 i" X9 Z% ~- PHP 5.6+: c( ^1 @/ K9 l( R" O
  V9 m$ `# u% N5 h
【安装方法】
0 [# t6 M! z  N/ w9 {4 C8 O- c1. 将 upload 目录下的文件,按路径覆盖到你网站根目录- D+ W! R2 a, F! s+ ~
% M& D& D0 ~. ~" M. ?
2. 特别注意:
2 a9 y" E2 w( W) p: Z7 @. g) W' \   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm0 e5 Q! b4 k6 Y  t6 q6 F
   (如果你使用了其它模板,请自行替换文件标注部分代码。)
, Z5 `! S( g+ B4 X: Y# B, j1 t$ ]: |3 I# s; M" E
3. 确保目录权限:. h- l. y0 E+ v1 ]% v4 G# a
   chmod -R 755 uc_server/data/avatar( [4 o& z/ O$ G: E+ ?! P& X/ G' L
" J! z/ l& j5 U
4. 进入:3 [7 [! D4 @) a/ S- N  q
   点头像进入 →个人空间 → 编辑头像% I5 C+ b- C5 l% o) Y1 {
   即可使用 HTML5 上传
; Q: h+ G! X( Z9 T! y: a' V: Q. E; n% O7 k; p1 ?
【说明】+ K" [0 [  N/ P: _3 M' y3 T( u
- 会直接替换 Flash 头像入口
/ n; P5 Q) i/ H- 无需安装、无需后台开启5 }! M& W, \  T  z3 L+ }+ D' G
- 不影响 UCenter 原有逻辑% W& v1 H4 u6 i7 R. Y9 [
- 保留头像简单裁剪功能(Cropper.js)
+ V6 b9 @% y7 c, u# m! E$ n- 仅新增一个htnl5上传组件
0 V; _' i. }9 B) i. g
, M7 N0 d; G' _8 ], a+ L
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {% P& a+ O' J# }  U- b+ N# X
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    9 m' j5 Y% C- _/ }! r; v  a
  3.         switch($ext) {# d( x0 T/ k7 g. b6 a! C0 L$ k
  4.                 case 'mp3':
    8 A* G" ?/ t: M. ], R' A/ Z8 X$ A
  5.                 case 'wma':2 A0 G7 t/ p0 F& n
  6.                 case 'mid':5 N; ~3 X$ l0 B, Z& q
  7.                 case 'wav':
    8 \2 B0 T7 P. ]2 r
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';' j" A9 `" H/ i: E5 S7 t) f! C
  9.                 case 'ra':
    0 w1 E+ a/ s* C9 F: {9 e" w4 M' V
  10.                 case 'rm':
    ' d: m9 A5 i  O: N) W, b
  11.                 case 'ram':( O7 F0 ]6 p1 r) b1 }2 b: {; {' V
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    0 p( T& q( f8 p! D
  13.         }
    & a* d" X0 B, ]
  14. }
    : u7 b) Z4 @* n/ _

  15. / w" E* y' @1 p2 [$ R
  16. function parsemedia($params, $url) {, u$ p# D  L" ~9 G
  17.         ...
    $ J/ \# X# S* E; Y
  18.         return parseaudio($url, $width);
    # ?: H  s3 r; B
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    ) Q/ C9 |! o5 L( @1 A- j6 n
  2. function parseaudio($url, $width = 400) {
    ( z  N  A. ?" @2 ]$ b
  3.         $url = str_replace('\\"', '"', $url);
    7 I0 r8 O9 t; d6 _9 k& p
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    0 ?" b% D2 `( C5 V
  5. 0 B  {. y3 I1 d* r" R
  6.         switch($ext) {' I; a5 d7 Y' h6 |( H& n
  7.                 case 'mp3':, q3 u. G& {% D. a/ u7 t# G
  8.                 case 'wma':: U, t# o$ h1 g" i6 Y
  9.                 case 'wav':
    2 S, I' |6 A+ u$ L4 B
  10.                 case 'mid':
    4 E( L0 K3 g9 }* J+ Z( X  I
  11.                 case 'ogg':
    & N3 B. x$ `6 j3 w
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    # T: q, O) k$ Q' Y& v
  13.                 case 'ra':
    1 Y' _* n- K; o+ C( u* v: r
  14.                 case 'rm':
    : Z1 P+ L" w+ I) o# F
  15.                 case 'ram':
    8 a' x4 E8 \* ^8 O* X- {9 Q
  16.                         // RM 无法 HTML5 播放,退化为链接
    6 _+ q# b2 l: v+ l
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';( Q8 x# F6 j  s) a' A/ ~" @
  18.         }
    , h* O% j" H! C5 F, r; O* v, d! _. n
  19. }5 o1 C0 B2 x7 ?! U" p4 d. j

  20. ! _  m: o8 J: E  F6 P7 }0 A
  21. function parsemedia($params, $url) {6 G) y. }1 n# \% J: l, Y
  22. % ]7 U9 E. P9 d7 |" Y! L
  23.         $params = explode(',', $params);, e6 N+ P' p) h% m. u: v' D. |
  24. 5 e7 u) d3 j/ M+ {1 ?- k( \1 o
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;
    1 l  x, T8 [" o# H2 H% Q
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;4 X  j& C' L; I8 N- o

  27. ' m! N0 N/ W5 T2 ?3 B0 M) C
  28.         $width  = min($width, 800);
    % _9 v' X2 D1 C4 K
  29.         $height = min($height, 600);
    " R: z$ N" _% d. Y4 f8 l. w2 T& v
  30. + {& r, h+ C, @
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    ; A% E6 M$ e) ~1 t/ u. E6 V! k: ~
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    " }* x* g- j8 W! R. i1 q
  33. / u: a3 j% Z- V5 i: ]
  34.         /* HTML5 优先(现代浏览器) */
    & ^0 w; |" Z8 K7 B9 z
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {& b3 \* Q/ |3 |
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">
    # ]/ K" E4 l: c$ \& w; S+ I& g4 M
  37.                                         <source src="'.$url.'" type="audio/mpeg">5 a/ l7 ]! G3 T0 Z
  38.                                 </audio>';1 m' J" X5 r+ n" v$ _/ k6 s% Q
  39.         }
    & H2 G$ \, W4 L2 m# U
  40. 4 e0 Q. k9 y- H# ^8 D1 [
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {; A( t7 q# v8 V) E
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"
    7 X" G* |! |* H1 X
  43.                                          poster="">
    6 {! Q/ a! T4 @+ c" F
  44.                                         <source src="'.$url.'" type="video/mp4">) F4 V; |6 N6 ?# s) E
  45.                                 </video>';* Q# ~/ r* P; u* y
  46.         }9 J- C* l6 @7 ~
  47. 6 h+ g' j4 p9 N
  48.         /* Flash 逻辑保留(但不指望能用) */. n* I; E, |4 ~' S% G+ Y5 B
  49.         if(in_array(count($params), array(3, 4))) {! M- r9 o- K, P6 a$ `2 g* Y
  50.                 $type = $params[0];- C8 ~; c6 i3 }; }, `
  51. ' v6 ]8 Q0 }) C$ Q5 ?
  52.                 switch($type) {
    " m1 k: S9 G: V2 y$ b# S, C* G- O
  53.                         case 'mp3':5 ~9 l1 ?2 ]0 f$ n; O, M: X- h$ I
  54.                         case 'wma':
    9 P# X" |8 o5 o1 y6 `3 Y' b( _
  55.                         case 'ra':
    + @# z+ Z) q# w+ U' X. E: v
  56.                         case 'ram':  p+ W, D9 u& s  G; Y1 M
  57.                         case 'wav':
    6 ~2 ~1 X# c" J- O/ o8 V- r
  58.                         case 'mid':
    ( Y9 x, p9 a6 n3 `+ U. {
  59.                                 return parseaudio($url, $width);2 E% o1 U- K" C$ s! @

  60. ! w" ?! B! ]3 b0 J1 i
  61.                         case 'rm':
    - B  K$ A+ \% X, }; K6 a
  62.                         case 'rmvb':' P6 f2 s6 u: I9 W) c: w
  63.                         case 'rtsp':& d6 B" W5 B7 U5 {
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    * U1 G0 W7 L4 o
  65. , p6 s% E& n( g+ [# j3 U
  66.                         case 'flv':
    * E; c9 n+ l: s' O- T- v' m' w/ X
  67.                         case 'swf':
    , i! S9 e5 ^/ D) b3 O8 Q0 p
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';! q7 P; I  X4 |
  69.   L1 ~3 R( l0 u" i
  70.                         case 'asf':9 U3 q- J* `: A* \
  71.                         case 'asx':
    % _8 x( L* O8 R$ }5 F
  72.                         case 'wmv':0 C. v6 P% R+ r( e, o
  73.                         case 'mms':% ~/ Q. A' S4 N5 V/ u0 O
  74.                         case 'avi':
    % M) i' ^# e1 ~' D
  75.                         case 'mpg':
    - A5 g3 O2 x( C; P; D
  76.                         case 'mpeg':- X0 C4 r4 |; J1 ?
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';/ N$ e3 k) _6 v
  78. ; b* q, B! L0 j
  79.                         case 'mov':5 h" w* Q: p. _4 m
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';4 a6 C7 l# p$ @7 N
  81. $ p" i# ~6 r: ~% F$ y$ h* d. }
  82.                         default:
    ! a7 j7 Q5 ^+ v" C- R$ i* k& \
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ; s% m# W" @. y5 s0 Z
  84.                 }" U; }% k+ ?/ D6 w! V) w/ J. O
  85.         }# Y2 Q- j; j0 k: W$ E1 W
  86.         return;
    & L/ {( E% Z5 V0 x
  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) {
    + o1 o+ V' T7 I) B/ N; |
  2.         $w = !$w ? 550 : $w;
    & h7 R2 x- B, O  O
  3.         $h = !$h ? 400 : $h;
    + D4 T* W* h! a2 a4 J
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);
    $ V% E1 ^( N2 U$ U3 l: [; Q7 q$ I
  5.         $url = $matches[0];/ L2 I2 s' K& Y  N2 W/ n
  6.         $randomid = 'swf_'.random(3);
    3 Q' y5 L& l8 J, R. i& z
  7.         if(fileext($url) != 'flv') {
    # C# R- F" e9 w4 J
  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>';( f3 w9 k+ m. Z' P; n0 R( R) Q9 U
  9.         } else {$ o! i& l) e7 V9 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>';
    ) G: O- i4 {& d$ x& W
  11.         }
    / ^% v; s$ B1 Q7 v! L7 T, X% w, R
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {0 @9 [- c! U6 a8 k/ G: \
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';
    $ f# L  U3 e, `) D- H& i" 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-9-22 00:19 , Processed in 0.035248 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部