【高州情】高州人深圳站

 找回密码
 立即加入
查看: 576|回复: 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身上,, f6 t6 K0 v3 h; E' q
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,3 ^2 z/ R$ O- s! ?5 V( M4 S
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
9 _1 x7 Z/ ]. R$ ~. S
& H$ x5 }9 U  X  a2 I$ m

* v' O/ A3 S+ [! v) B& Y3 {; O6 c+ U. O3 {0 ]2 c5 e
8 y. E. x, `% g- a! T4 S
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
7 T8 S- _' V1 ~$ p" [" J  D==============================
3 v  V7 y. M/ D- O: y2 m( i【目录结构】# O; f4 H2 `9 b7 ^
upload/& d3 l( T# u- j" V- }" n; `7 d
├── html5avatar.php        插件后端接口(核心逻辑)
" `1 U2 H/ ^. G& Q/ i3 ^5 a; ]└── template/$ v4 C% f( w) b& T: x  K
        └─ default/7 Y1 M3 N/ N3 S8 S3 \! D. |0 G
            └─ home/6 _1 W; p) n, U( v0 v9 ^' F
                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)' _$ ^, o8 {0 L% ]3 I  y4 ~" m6 t8 {; ^
7 \1 r: L4 f( f1 Q) b
【适用环境】' V: _3 j: g0 G8 O4 n: K
- Discuz! X2 UTF-83 A& B' F+ s0 y% @; d$ i6 q
- UCenter 1.63 b" m# u, M5 @7 i6 d0 u, ~6 v, p
- PHP 5.6+8 }2 K8 k" L8 l' h4 z$ c

5 w8 o, a1 ]1 M2 L. z【安装方法】
/ V1 ]6 i* E) w/ S8 y4 q1. 将 upload 目录下的文件,按路径覆盖到你网站根目录
! w' D  N4 A# |- E$ B& }% W6 P* `* d5 V
2. 特别注意:
  u5 [3 J; [' O  m   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm" N( `7 c- U6 F
   (如果你使用了其它模板,请自行替换文件标注部分代码。)+ _0 s0 }5 B+ L6 M3 i# O. }8 P
9 c4 f7 k( G, x" r. e
3. 确保目录权限:
5 G: f- ~' j: ~( N! Q2 y* Y   chmod -R 755 uc_server/data/avatar
: w/ z: O' x; Y/ g! h0 |( H' h/ {) c/ Q. X* Z6 T/ H8 }1 h1 g' |( e
4. 进入:4 F- l( l- A, ^0 W% z$ a4 C
   点头像进入 →个人空间 → 编辑头像6 U  s1 U" u$ v
   即可使用 HTML5 上传0 o1 j6 m+ A  R" O. B
# Y! b6 d% w: x; L8 }; {
【说明】8 f& `, t; {; R
- 会直接替换 Flash 头像入口
; g' \9 L7 i3 `2 O& W- 无需安装、无需后台开启1 j+ _$ r0 V4 @/ f/ ?
- 不影响 UCenter 原有逻辑
+ ^5 E& e# ]5 d  M/ C4 R- S! q0 S5 |- 保留头像简单裁剪功能(Cropper.js)
6 E; N( A8 }( ^- 仅新增一个htnl5上传组件
& p0 G; b; k" }& W  G* _6 m

9 ?; U' \# i: E' E) D
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {$ `) U8 @' V$ K, e3 G2 c
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    7 x' u: Z$ E5 S6 p5 R+ u3 r) H, P# l
  3.         switch($ext) {  q- {% U9 r$ E  a
  4.                 case 'mp3':3 e& k% z( r3 ~$ x' X4 o# A  {
  5.                 case 'wma':+ n: u! L7 [3 j) {8 H: Z9 z: `
  6.                 case 'mid':
    4 p) o2 B3 t! `( h9 k* F: @% u  b9 g  c
  7.                 case 'wav':! ~/ z6 Q0 T: N. Z  I4 Y
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    4 V8 L& R3 h7 r! c) K
  9.                 case 'ra':
    ' X* f) m& D8 U# P1 h
  10.                 case 'rm':( N+ @9 R2 S& ^6 V$ Q* W+ k
  11.                 case 'ram':/ F. c0 t6 X* `: W) R; z# m
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';3 {: V! c3 I/ _( V$ ~
  13.         }
    2 v" t3 E' }$ U' k- c/ ^; e
  14. }
    / v( j0 J/ M1 u2 O- p8 m8 D! m7 b

  15. # y; g! e' G- N8 A9 i
  16. function parsemedia($params, $url) {) f- ^$ p( M3 C6 l4 q
  17.         ...
    2 R2 a- G! O. F& O
  18.         return parseaudio($url, $width);' l# R' V4 {7 U: ~
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件
    0 V6 |5 k; A3 `1 Q' s
  2. function parseaudio($url, $width = 400) {* ~+ l0 W0 }/ @
  3.         $url = str_replace('\\"', '"', $url);
    4 @+ [6 ~1 J" w: Q( O& J
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));2 C: |9 @  a9 G: x( d* u0 x
  5. / V% q: c+ Y% [3 l' h$ z( g- m
  6.         switch($ext) {
      B7 O1 s" N3 i
  7.                 case 'mp3':; e/ E0 Y: f1 B$ R4 H. u: r
  8.                 case 'wma':
    * F( E4 W/ ^7 ^( b4 A
  9.                 case 'wav':
    $ b# c; {8 z5 ^3 a$ |' u! y8 t+ E
  10.                 case 'mid':
    ' w! U) F3 I$ n2 {5 r
  11.                 case 'ogg':3 z& X/ H: _& b, ^
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';3 a+ u$ o! u- J
  13.                 case 'ra':" i4 M: U2 N9 E8 H7 o6 ^. n$ E+ ?
  14.                 case 'rm':3 g! R7 Y9 }2 H/ Q* s) {* _  D
  15.                 case 'ram':
    3 Q) h& ~) n' @$ o& O( E
  16.                         // RM 无法 HTML5 播放,退化为链接
    % ?3 O+ A, A+ i5 Y) M
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    # x* `6 t0 g0 r- p& u0 v, W
  18.         }
    ! B& C0 F: e& S+ e, V  O
  19. }
    5 s4 W6 R9 X  H: v; H' \

  20. ; S$ V  c& V! i9 f
  21. function parsemedia($params, $url) {, O  s: O5 ?: }, i$ W$ ]% I- i
  22. . S* R4 c$ f. {* r4 I8 V$ ]. c
  23.         $params = explode(',', $params);( Z  k4 x* I: Y  k0 R9 Q- Z

  24. % ]9 s1 `8 m% G. w$ n. D
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;9 u8 ~; d& w- q0 E- L* q
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;( d5 O) H$ v2 D

  27. ; h0 [; O( L( t: P
  28.         $width  = min($width, 800);% z0 {, W3 d0 S3 I4 _+ V6 k+ Z
  29.         $height = min($height, 600);4 O9 C  Z4 e- k" d7 z# S. H, U
  30. - O) T/ y$ X2 \+ G5 k+ g6 I; V
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    " }' Z; c+ {6 L3 L* m* W. c
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    8 N7 L, |# ~3 G8 G1 E& R
  33. 0 _6 E1 @* G- F$ F/ D. ?+ t
  34.         /* HTML5 优先(现代浏览器) */
    ! ~" Y9 M6 Z7 M0 A+ J  I
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    9 R+ w. y* q% ]) |% t  @7 Q
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">1 s, g! |  B( l, H9 d
  37.                                         <source src="'.$url.'" type="audio/mpeg">8 C* V9 Y6 o8 z# E
  38.                                 </audio>';) J7 }8 C" l; @- ?- K
  39.         }2 ^  ?4 M8 D! y" f: L

  40. ( l$ L! D1 t) B2 E  b
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {8 B$ z: _# I/ \( p- }+ o: E( u4 |
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"1 E* Y' ^1 v9 S4 H/ P
  43.                                          poster="">
    4 Q& [  Y* i. |8 ^3 K3 M% @
  44.                                         <source src="'.$url.'" type="video/mp4">0 O4 z1 h/ m( N2 |6 d/ I4 Q
  45.                                 </video>';
    : o! e2 ]$ g: r, P" |8 A! [
  46.         }
    & h/ e! D. |( K$ d& N5 n6 {3 ^2 x
  47. 3 T  ^/ g5 Y, x7 k: U% C7 E
  48.         /* Flash 逻辑保留(但不指望能用) */1 l2 H  f. P  `$ w, z; h' M0 @
  49.         if(in_array(count($params), array(3, 4))) {
    ; b1 a6 N, h( V. p4 K9 q7 x* B
  50.                 $type = $params[0];& D8 a1 ]' f# e; [7 G
  51. ( F% Y$ N* _5 t: v
  52.                 switch($type) {2 o. E, s0 `5 t- W- u
  53.                         case 'mp3':4 @( ~) ]; O8 b% K: X
  54.                         case 'wma':  K1 G  N! e; @
  55.                         case 'ra':
    6 c/ _& U- o4 Z8 z5 v$ U) W
  56.                         case 'ram':3 ^# R9 r! q- E  \  y: p
  57.                         case 'wav':
    0 D- U* c/ j' c/ E8 _
  58.                         case 'mid':6 X1 R! e# _# N# j
  59.                                 return parseaudio($url, $width);0 m, |/ ^: V. c4 l; v. k, ?2 o
  60. " ^" a) [% S) N' k; ]# d( Y- D
  61.                         case 'rm':
    ' i1 d/ B+ |. z- y; [1 a" S  \
  62.                         case 'rmvb':1 c  i: C  U9 N/ X3 }$ W( e
  63.                         case 'rtsp':
    ) i) R, c9 G& n
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';' [8 ], m, f  v+ |

  65. % b5 F! Y6 e# A) P0 L
  66.                         case 'flv':
    , t) r! ^5 x" ]7 M/ Q7 ?3 Z
  67.                         case 'swf':( Z2 K: P: L' S' ]6 v8 l: H5 R
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';1 @3 O6 u3 n/ S+ O
  69. ; V' L- l& s) _2 u  s8 w5 U3 ]
  70.                         case 'asf':; q9 k" S% {( T+ n# V4 H! F: n+ v4 p7 h
  71.                         case 'asx':
    5 L5 r8 k9 p8 a5 Q- M% F
  72.                         case 'wmv':/ \5 C5 s2 H7 q. D
  73.                         case 'mms':
    $ M6 P: y$ D5 D
  74.                         case 'avi':
    6 M3 h2 [$ I! h6 l9 _
  75.                         case 'mpg':0 |$ l! o" q# l" m2 D
  76.                         case 'mpeg':' A; i- f. e6 e; [& [
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    + K; G6 ~, u0 g* z" M* \- `
  78. , R1 u4 `/ n6 U/ E% Z# j
  79.                         case 'mov':
    & g0 l$ h4 h* b* X: b  F
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    5 Q! Y$ P7 r  D, k, E: f+ K

  81. , D2 i% g) |6 g; D, C: }
  82.                         default:
    " M8 g& r# @& i' x* ?* I0 e& k
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    4 W+ X" C6 P* Z2 ^& S7 ~1 Y1 i/ q* {
  84.                 }
    8 I% O" l% _) d! A# e, U6 ^
  85.         }; v' w0 _3 L' C- e
  86.         return;' a3 n4 J% p2 S" ~; z
  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) {
    / F4 c' n7 h1 p
  2.         $w = !$w ? 550 : $w;4 B- A! x; }9 G" `# N0 V- x4 o
  3.         $h = !$h ? 400 : $h;8 B' O2 z, w% y- h
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);. c7 u! ]; p! f- ~! E
  5.         $url = $matches[0];
    : u5 |5 X1 F2 R$ _& g6 l7 }5 O6 V/ h
  6.         $randomid = 'swf_'.random(3);
    3 x7 {0 n6 E0 D' l, n& Y% e
  7.         if(fileext($url) != 'flv') {$ X* e% A' {3 _" |# ~
  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>';& d7 h' w* ^0 ?5 }, {. E) [
  9.         } else {
    ' s9 b+ B* B7 @) D+ }4 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>';
    " _; e+ v7 {$ v8 l; V. A; O6 e+ x
  11.         }
    0 o# s% T5 G$ u& c
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {* t: }" Q/ ~* C$ i9 c
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';; t  b% ^0 d' `& h  C& g
  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:14 , Processed in 0.027317 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部