【高州情】高州人深圳站

 找回密码
 立即加入
查看: 752|回复: 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身上,
, g4 J9 u* T0 z( |用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,) s8 \: l" d- x! u: V3 C
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
/ _4 T5 w8 I0 W" a* _9 V) g

$ n( m+ l3 M2 \7 H3 w: u9 }( @! v

% z$ Z9 u8 P+ x- ?$ I! O/ D* r' W
- g9 T; Q+ Z4 d; M3 t4 i) q% M! G; U, G( l+ o7 g7 Q: C
Discuz X2 HTML5 头像插件 v1.0  2026-05-050 [$ f, O6 S0 f
==============================
7 M% u" _# P- {( n6 N# e% {& m【目录结构】
+ l" f! F0 V  g# Z" ?- i4 Vupload/' t. o3 }' |# Z% ^8 l
├── html5avatar.php        插件后端接口(核心逻辑)
0 {7 f# a) \5 }0 R( ~9 Z0 p└── template/; g# u) v" k6 i/ S- ]
        └─ default/4 u# G2 s& `2 G
            └─ home/; I2 g: {  ~4 u# Z: J
                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)( ~$ E; y( R9 x1 C% ^2 b
7 b+ C+ X9 v' n" d  Y' }: a
【适用环境】# o! j0 _! F& }3 B+ a
- Discuz! X2 UTF-89 G" ]- b: ~1 M5 r8 i* ^
- UCenter 1.6
6 ]9 y& q" y+ e# M8 f; U/ f- PHP 5.6+
5 w) h# }8 O+ V5 P4 `( F8 S3 ?8 M" [7 A5 ?1 s9 @
【安装方法】) L' p' x3 o, [# S0 Q' Z- ]
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录
. R% q2 V* p5 e  r! v& q/ ]8 }4 }5 I: N0 o  o
2. 特别注意:
6 ?: p7 ~9 w+ a, {5 t   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm
& }% W& a2 \1 O' p& f; b   (如果你使用了其它模板,请自行替换文件标注部分代码。)
& Z4 I( M2 y1 p0 o0 \3 n4 ?: s* P
3. 确保目录权限:1 v+ K* h; U% D. Y, e2 g5 x3 b
   chmod -R 755 uc_server/data/avatar9 E: S" M& O& m% g; u

) |* N$ `* ~4 e" G4. 进入:& E( Z% ^- \* g
   点头像进入 →个人空间 → 编辑头像* z% q; a* W* s) F& b( a6 n; W
   即可使用 HTML5 上传
: D* t, g3 s9 r' K& E$ R4 A: ~6 Z# x, z
【说明】
: Z* m6 b. o  i- E: O- 会直接替换 Flash 头像入口
" E. m9 I6 o- b) f3 U- 无需安装、无需后台开启
4 A9 Y# F, m/ ?- 不影响 UCenter 原有逻辑0 L* ?  q0 n4 r9 a2 y+ u- m
- 保留头像简单裁剪功能(Cropper.js)& l+ J4 h* H* D. P4 J+ Q6 [& t
- 仅新增一个htnl5上传组件
; W( f( J" N# N. y
1 ]/ }0 C; N6 z3 Z9 _* {/ f7 A' ^6 p
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {
    : U$ f1 D2 Z1 @8 f$ a" n
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));2 S' A* ~3 L( k/ w$ @
  3.         switch($ext) {
    + R9 A' O9 [% _3 t
  4.                 case 'mp3':
    6 O: m. W$ a9 p' z  x
  5.                 case 'wma':# J, m1 p. }- @. K# \
  6.                 case 'mid':
    " K7 ^* a) g/ @" l- K9 F
  7.                 case 'wav':: o8 `4 @1 {8 I4 G9 B2 E
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';% `+ A+ V3 {. x/ D3 z6 T5 h* O% w
  9.                 case 'ra':
    8 S' B' `9 H' a
  10.                 case 'rm':3 R  C+ x4 A2 B9 |
  11.                 case 'ram':# i* _, D" c: B0 |
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    2 t4 v8 A, u7 A# e  |- @
  13.         }$ V2 w3 F+ `, G2 Q& z7 G2 i* t
  14. }' F( a3 Z, s3 {0 E7 \- _

  15. 7 R3 Y5 C% u+ `0 e% t. U; `4 r% h
  16. function parsemedia($params, $url) {& L; i! j5 m# v! P8 F2 B4 u
  17.         ...
    - ?5 E* J+ L* p. {2 Y; {
  18.         return parseaudio($url, $width);
    4 }" ^: z; K5 e+ l( E) ]
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件6 M. Z+ \$ K* C6 f+ _3 K5 J
  2. function parseaudio($url, $width = 400) {
    - s) ], d. g! \0 S
  3.         $url = str_replace('\\"', '"', $url);, g6 }* W& _- R# z% [  H
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    - q: ^. Z) @% u  ^) b

  5. 4 F7 l- j! A- X
  6.         switch($ext) {
    . E( b6 {9 R8 J( O1 W+ b4 B
  7.                 case 'mp3':2 [1 L% `: G: W  L
  8.                 case 'wma':4 {5 \& a( a) z9 e
  9.                 case 'wav':
    , m5 {2 ]4 l9 h6 d) A
  10.                 case 'mid':
    5 O& [$ f/ ^- n, W6 |  ?
  11.                 case 'ogg':
    0 s2 F0 {7 P# z
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';" @( ?: Z  s7 ~6 Y3 C" B! z
  13.                 case 'ra':  p* B- D/ h4 d/ h5 }- g8 V  N
  14.                 case 'rm':/ W2 c6 j4 p$ A
  15.                 case 'ram':. _1 T  e2 p, P% P6 g
  16.                         // RM 无法 HTML5 播放,退化为链接
    2 {  U9 I0 F/ T
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';6 a# S% a8 a7 M1 a5 |8 v+ E1 U
  18.         }
    & J+ x" H0 @5 b7 L# P
  19. }
    1 P$ ^$ h! r1 A2 z+ b. X

  20. 5 [( |4 g5 ^& R% J
  21. function parsemedia($params, $url) {. d- T0 a' L3 x2 P+ p

  22. % r) r( c4 `: b) K: ]! c
  23.         $params = explode(',', $params);
    9 `' {. f, l7 @  d. M" J3 l
  24. ( p& D* z# m$ m& W
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;
    . q7 u7 u& J& ?
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;& D3 W" [  t* ^9 \" }
  27. & ^, c8 s) `* @; y% N! X
  28.         $width  = min($width, 800);
    / @& c. M, [% s! G2 J0 q4 D4 H
  29.         $height = min($height, 600);$ l$ e( u5 e, u  y& V- D- V
  30. & m, G" z! {  \8 t% E. Q& \% J2 G
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    6 T; L; S9 x. Y' N, @% h
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));+ d: D6 L6 v- {$ i# e" k  ?  s
  33. , ?. j, k7 P$ Y7 T6 p5 Z1 I6 X4 f
  34.         /* HTML5 优先(现代浏览器) */
    ' U$ \5 h8 ^2 C( h
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    0 B, r, q6 |3 B. O  s# f7 J
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">/ P3 L! }% w' _$ b& Z8 b; f) v
  37.                                         <source src="'.$url.'" type="audio/mpeg">" V' E) y1 y# D/ `/ o
  38.                                 </audio>';" V1 Z# V2 w* t; y8 T9 C4 |! O
  39.         }% l" i4 X& N( j6 f3 ^

  40. % L; m9 }' e5 u. l0 ^5 c3 M
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
    : H- Q0 I4 g8 H  C; [* R# b
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"
    $ V# w: G, m2 n9 {6 o& I
  43.                                          poster="">2 g" ?6 \" T$ A0 U
  44.                                         <source src="'.$url.'" type="video/mp4">) u7 [9 P8 D' K" l* ^/ z0 U
  45.                                 </video>';
    : s. j. |+ C5 o$ m2 J5 c6 y. V) ?8 [$ ^
  46.         }
    , C; f1 L2 [, b  W% x

  47. 3 S2 M3 p- n/ k2 i) C0 k* Q6 [
  48.         /* Flash 逻辑保留(但不指望能用) */' }4 f$ R; P: S, D2 Q- _
  49.         if(in_array(count($params), array(3, 4))) {! c6 }; M  {! F- O9 V8 `# \
  50.                 $type = $params[0];+ O; d: G% d5 u, y" C" J' y8 B' L

  51. % l: A3 j1 u* V4 m7 A) ~4 O
  52.                 switch($type) {8 P/ g/ {& `" k$ L# h
  53.                         case 'mp3':
    % S6 N0 z7 j. ]: n5 y# a" d
  54.                         case 'wma':
    5 _+ m, g; R; X0 \# M- r8 \$ E( n
  55.                         case 'ra':
    0 n9 V' {, e( z( V
  56.                         case 'ram':: a1 p  T: D* @" N% C2 _
  57.                         case 'wav':8 |+ S0 F, n# V8 N" t; ?
  58.                         case 'mid':9 Z* Y$ b/ A1 v$ X- g
  59.                                 return parseaudio($url, $width);
    7 {; }! @1 U# J

  60. . b( V7 p: b4 Z
  61.                         case 'rm':
    ! Q: y' \6 C) g' Z$ M
  62.                         case 'rmvb':5 o7 i. Z! `. x. I" H
  63.                         case 'rtsp':
    * @4 L% g8 y& _, |
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    + H2 }: m6 m- h, a
  65. 4 u" |& J3 o+ d+ z/ z* O8 z7 S3 p
  66.                         case 'flv':
    3 q2 Y  J: _: [
  67.                         case 'swf':
    - `* V- a! h6 [( X# q1 A+ W
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    % l0 K) s  l/ F

  69. 9 X3 }2 D2 [: Q* N) c. s
  70.                         case 'asf':! ]' n; g) R  ]1 j
  71.                         case 'asx':2 P+ @: L' {' I
  72.                         case 'wmv':8 g$ |' x+ F7 \
  73.                         case 'mms':
    ( x) [  K: I+ \  G3 M, D
  74.                         case 'avi':9 ~1 X6 s+ a8 k
  75.                         case 'mpg':- b" Y# s9 F8 p) i, X
  76.                         case 'mpeg':
    5 O& ~  u. U/ o
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';8 E  H; H; A" j+ F' I
  78. : Y0 x# ~$ P6 c4 z) v
  79.                         case 'mov':
    7 I! ^4 R# l" T& O0 ]# _" A
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';  v, A) [) C/ E
  81. 1 c% e) E; v: G+ ?6 }4 D
  82.                         default:4 d2 Y7 I" w7 _2 I4 C% H  y
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    2 ]  I" C, h" F, n8 m2 |: W: a' l
  84.                 }
    9 n8 W% u# }; c' o  @4 L
  85.         }
    $ p# _! F1 @0 W+ P
  86.         return;( P! ~2 a. ]6 Z* j6 D2 s+ j
  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) {$ c- x- G+ N0 }6 C2 \
  2.         $w = !$w ? 550 : $w;
    $ H' R  {0 Y: A( y7 J# Z, E3 f
  3.         $h = !$h ? 400 : $h;
    7 K2 V, D& v( R3 w
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);7 h$ {8 o1 Q+ k
  5.         $url = $matches[0];
    3 Q- f3 i! N# l  f; Y
  6.         $randomid = 'swf_'.random(3);
    - Y+ s" H6 [1 ~* u" P* }" e* o$ w
  7.         if(fileext($url) != 'flv') {0 I- Q! e% O+ W* s, B
  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>';, t; H, Z! n$ J4 u- Q+ e* f4 x
  9.         } else {
    0 k" p7 N; s& Z- H1 {. G* p
  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>';
    * F9 ]" j1 y" p) T; }6 w
  11.         }
    5 f' f" m2 w7 p! G. K( T  Y7 t
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {5 x1 \9 p0 E  Z$ P0 L9 e2 B/ Z& d
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';
    : G) K4 V4 l% |5 X) C. x2 ]- 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-11-6 14:09 , Processed in 0.026862 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部