【高州情】高州人深圳站

 找回密码
 立即加入
查看: 376|回复: 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身上,
4 k6 i4 A" z' O; e: j$ m5 b用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,% H8 c5 ]9 a( q$ K
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。

+ Z/ S$ D% Z8 J. Y' ~
0 J! P1 x8 ^% Y4 N; b
& t' C8 }. S& x$ f! j1 f7 n% `
8 |6 w- ^% Q  I5 T, M
% y2 @) o% Z  ]
Discuz X2 HTML5 头像插件 v1.0  2026-05-05# Q+ {; I' ^7 u1 d
==============================
- h1 _/ R+ [! `( o+ ~! y8 ?【目录结构】
+ k2 T" L; X  {; kupload/
8 g, n- Z% R" r* s  `6 n├── html5avatar.php        插件后端接口(核心逻辑). I' j& S4 \) g- ]1 J) a0 b" z
└── template/
/ ], J' X/ D2 L" d8 r        └─ default/. h8 h2 g+ s+ Z5 y' {# Y3 I& o* z
            └─ home/
$ ~: }% r$ e6 c- _( A' v                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)
$ t3 ?$ T9 d$ \, W" d6 |# p
# X- ]5 X7 I$ w4 l: k, X  z# g0 g【适用环境】& @6 a% b. \5 l! X- l1 W
- Discuz! X2 UTF-8
  ^* n) w. n+ P8 A9 c- UCenter 1.66 M. c7 j3 `/ ], O0 q% X
- PHP 5.6+
1 j# F" ~$ f/ @( |
/ h* F+ Y3 c& E9 o! d% l3 u1 t& G* F【安装方法】1 g$ m6 G; ?# U/ k
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录+ l9 V5 P! G6 ~: F; e" L3 y( a

; D% k- _& M5 ^2 X, p  h2. 特别注意:
2 o/ `, C- U$ [   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm
+ A4 P& ?, Z- ^7 W   (如果你使用了其它模板,请自行替换文件标注部分代码。)2 e) ]7 h& v6 M, T: A% b2 h/ _
, m/ D0 l' G' S! C
3. 确保目录权限:" Z1 X8 ^0 R( R. t, b: I* A
   chmod -R 755 uc_server/data/avatar
7 g) K6 Q1 P$ \( C! R3 ^* a7 |1 D5 W! @9 n5 ?' f/ x
4. 进入:! J" Q& j9 q& \, h+ D1 @! f
   点头像进入 →个人空间 → 编辑头像
' @# S( i& R0 a7 @: n   即可使用 HTML5 上传
) U  a; `5 c/ R$ Y/ t8 I* v# U* n' Z7 R) K9 h/ C; z* O8 j3 K  E
【说明】- o2 \3 k0 n6 t" t
- 会直接替换 Flash 头像入口
4 I- m; ?4 |. i6 U- 无需安装、无需后台开启* p2 L# A, `( H+ c+ O$ j6 Q2 v
- 不影响 UCenter 原有逻辑
3 j) @; {3 ^1 O% g2 v1 v- 保留头像简单裁剪功能(Cropper.js)- n; X- ^# l0 k9 e3 Y  o
- 仅新增一个htnl5上传组件
# r* y+ s( \+ L# h8 c# Z

. K/ ]" l' |7 V9 Y: j( R" t& l1 F
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

Rank: 12Rank: 12Rank: 12Rank: 12

金币
7308
贡献
615
威望
9151
最后登录
2026-7-16
帖子
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

金币
7308
贡献
615
威望
9151
最后登录
2026-7-16
帖子
1875
积分
25896
UID
10

论坛元老 网络高手 新人进步奖

4
发表于 2026-5-18 10:25:41 |只看该作者

修复多媒体控件:把原来多媒体的FLASH控件替换为HTML5原生多媒体控件

原多媒体控件:
  1. function parseaudio($url, $width = 400) {
    # e. J9 a4 K1 x, Q* M6 H
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));. d* g6 }; H; i2 _
  3.         switch($ext) {3 q" y8 M9 x+ u$ ^" S  [- h
  4.                 case 'mp3':; T1 X$ a* Z; N8 O+ V- E! s3 c
  5.                 case 'wma':4 u; P/ K% f2 @
  6.                 case 'mid':
    2 w. N1 o9 r- I( q$ p% q  b8 y4 W
  7.                 case 'wav':
    1 g: K& H6 @  D# i( d
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';: P9 N' {# w2 J( y
  9.                 case 'ra':
    ( `' [+ n  ~: X, v( M! A% e9 k; N1 i% O
  10.                 case 'rm':
    ( ~. c+ l. ?4 O  A. B; m' z' N6 d
  11.                 case 'ram':0 _! ]! z; Q  B4 b
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    - R7 o: c6 e5 \) {1 \; `5 T, I
  13.         }  ]# k- k. N- a2 W  \6 T4 i1 {
  14. }4 F; g4 a7 J/ q1 B( G
  15. ; Z5 H1 L4 v8 X5 U* H& S: [
  16. function parsemedia($params, $url) {
    - l& j: g0 I* v
  17.         ...# ^' y4 c/ P; }
  18.         return parseaudio($url, $width);
    * e* S7 T& f& Z0 p0 @
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件9 Q% Q9 ^) Y4 p- M6 ?9 u1 I. f2 g% d9 K
  2. function parseaudio($url, $width = 400) {" z% J! U* m; I6 z
  3.         $url = str_replace('\\"', '"', $url);' Q/ w8 l7 k! `1 A( _) M0 {: Y( |5 H
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    7 |5 T2 q+ y9 k' C

  5. - Q  t* J, [# z% x# d; x6 s% |
  6.         switch($ext) {
    9 W4 J% a4 I' v& e" p2 t
  7.                 case 'mp3':
    / w& w3 e) W+ H* J$ z3 I# r5 W
  8.                 case 'wma':
    2 `0 x/ \2 N2 @/ W5 I& ]- ~
  9.                 case 'wav':2 Q/ K8 G+ W& o8 g4 ?3 j* C  K
  10.                 case 'mid':
    1 Y8 n7 o2 E: r* J2 L
  11.                 case 'ogg':' k- V3 f1 c( O" r4 N: E$ L" r7 [
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';# j- W1 Z7 m& o
  13.                 case 'ra':
    - C* @* P; L7 {
  14.                 case 'rm':, e+ T: X7 Z8 o3 j
  15.                 case 'ram':6 E) X3 H( P; Y; W! W
  16.                         // RM 无法 HTML5 播放,退化为链接
    # F8 o* V) C2 m) Z, A# O
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    & R) |7 t# }" m) R- Y! z
  18.         }* t$ c, m# E- e- s( m5 A
  19. }  c# r' q. O6 o# ^3 V" f
  20. ! U2 \+ O1 p0 Y8 V! G; q* @
  21. function parsemedia($params, $url) {+ S8 k" R1 o& S5 s1 `- x; x
  22. 2 u) W$ I5 D: I- B. A
  23.         $params = explode(',', $params);' U( G/ E* o* d6 v% E* {

  24. 0 N' L0 H# }* K5 g/ M
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;7 F' g& U8 h% g6 C/ X: E  s3 v
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;2 s+ N% a, x/ _5 a

  27.   M. P! N- ^; z9 O( T2 f; q
  28.         $width  = min($width, 800);
    # e' ]  w; @9 r6 u
  29.         $height = min($height, 600);) y2 v; Y$ q# g- C

  30. + ?7 \- j, A4 W( a( g
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    8 L* `8 |5 k/ Z# `; H- y3 `
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    ) W9 d' F& P; Q! I" [$ L; b7 T9 l
  33.   @9 G" @( H) c% W+ I* |0 r8 `
  34.         /* HTML5 优先(现代浏览器) */
    5 W" L8 Y5 i  a/ j
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {) V/ @8 ?! @+ u* S: d' N
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">
    $ t/ v3 ~% p0 M+ _8 `
  37.                                         <source src="'.$url.'" type="audio/mpeg">
    & K0 ~. t  K$ q, b- L
  38.                                 </audio>';& B/ X4 ]; I/ ]" ^* D" x1 \2 u
  39.         }
    9 G* s: j; R" m5 N' U3 H6 ~
  40. 4 C8 I0 ]( c+ x' ~4 l% @6 a: K
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {  E* I# N8 A0 F0 J( ~1 s/ t
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"
    * L/ n  U6 j! v, @3 F" [& f' z
  43.                                          poster="">3 d$ H# i1 }5 S1 P. t) c
  44.                                         <source src="'.$url.'" type="video/mp4">
    % Z0 g3 a1 z" w  T+ Y+ ^
  45.                                 </video>';
    3 O+ f/ i7 a6 o2 u5 @
  46.         }
    5 k! L; m# ~1 s3 P6 I+ l3 s

  47. - B6 C4 I5 g4 L
  48.         /* Flash 逻辑保留(但不指望能用) */. ~' L8 I2 J; B& R' l1 b& b! D
  49.         if(in_array(count($params), array(3, 4))) {' _4 L8 C3 d8 Y& {
  50.                 $type = $params[0];: E# Q1 f+ A7 q' h5 ]/ @% k) Z7 z# [

  51. ( f7 K( A8 S, r. d
  52.                 switch($type) {; `. J4 Z: K+ O2 {" k
  53.                         case 'mp3':; r/ ]% G0 c0 ]6 ^4 i7 f
  54.                         case 'wma':
    5 D$ ]0 q  C  d+ y% A3 {. o
  55.                         case 'ra':
    1 x6 T9 j) |1 v# z4 \/ P
  56.                         case 'ram':' X' L4 X, C$ \
  57.                         case 'wav':& ~" W. a# M! V9 {
  58.                         case 'mid':2 }* r, k- ~  M1 p& U0 L5 n
  59.                                 return parseaudio($url, $width);0 `/ _7 f4 c& u% I# f! s
  60. & g. v1 z+ I9 G7 ^
  61.                         case 'rm':
    / B3 E$ i4 Z' b) R
  62.                         case 'rmvb':, o9 A' O/ ~! m8 y. f
  63.                         case 'rtsp':
    ! k; Q- S* ~% Q8 x4 a
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    0 |1 {  n( Z; H  d5 ?0 s7 }  k

  65. 1 N8 @9 M! v9 Q4 T# y* u9 y
  66.                         case 'flv':9 J8 p3 T" O) b# F: d; {
  67.                         case 'swf':# [5 A/ ^. E  N, Y4 B0 W/ N! T
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';% G" w8 G3 m' b+ B6 y/ ]0 M

  69. 2 x7 Y; i; _1 x0 q$ O
  70.                         case 'asf':
    ) U8 `; K- A' A3 I& k- I
  71.                         case 'asx':: k/ n; S5 P' {. e; n
  72.                         case 'wmv':6 ^+ f9 L0 l/ j. [# A; `+ Z7 `
  73.                         case 'mms':
    5 o+ O- F! J4 N; e
  74.                         case 'avi':8 G0 s% N8 N# s
  75.                         case 'mpg':
    1 L% \: p: \: ?  S7 U. B
  76.                         case 'mpeg':
    5 k' o+ o; ?( m6 @5 _) F
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    0 V& N7 {, B5 ]' k- m7 ]( |' B

  78. $ w/ ^7 X5 b$ ~% C; ~+ H
  79.                         case 'mov':
    8 Z4 s9 s* M; b
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ; b- u/ Z: K, k& |$ T( `

  81. 1 ^/ Y' c, {7 N9 p+ |
  82.                         default:2 \2 r4 l0 P) Q- Q; `# t2 o6 b
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    - o1 v3 `% w& g
  84.                 }4 }: s) D7 K" h. U) i4 r
  85.         }
    - B* V3 {' y: `2 m4 k
  86.         return;
    8 i& @4 M, }% N- c9 K
  87. }
复制代码
这个世界只有10种人:一种是懂2进制的,另一种是不懂的。

【情系根子】〓 https://525247.net 〓

个人业余电台:BI7ILX   守候频率:1343212JJ08

管理员

论坛测试[砖]家

Rank: 12Rank: 12Rank: 12Rank: 12

金币
7308
贡献
615
威望
9151
最后登录
2026-7-16
帖子
1875
积分
25896
UID
10

论坛元老 网络高手 新人进步奖

5
发表于 2026-5-18 11:03:28 |只看该作者
原FLASH已死:
  1. function parseflash($w, $h, $url) {
    , H5 ?" L( R1 i; H/ s8 @
  2.         $w = !$w ? 550 : $w;
    ; c+ s* [9 w9 o$ ^. s. \4 o
  3.         $h = !$h ? 400 : $h;3 }' K+ z0 Q/ K. d4 g
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);
    3 D: ^- D$ ]) v
  5.         $url = $matches[0];
    ; J3 M* Q9 a; ~6 k
  6.         $randomid = 'swf_'.random(3);- o4 n) K" b. [: E: L
  7.         if(fileext($url) != 'flv') {# c: I. q5 f* x8 i. N' S, \
  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>';! w( C% t( }+ t+ {/ [' l: n
  9.         } else {# p& q( I5 m% }; 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>';. `+ v. Q5 X/ k8 ]6 Z3 z9 [
  11.         }  q/ ?5 d8 |  {' G
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {) O8 d! E+ t6 L$ J. g
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';
    3 n, G) Y* \/ y4 m5 L
  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-7-28 15:02 , Processed in 0.029483 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部