【高州情】高州人深圳站

 找回密码
 立即加入
查看: 755|回复: 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身上,
; X8 {: B% q( G用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,
  U2 g/ }6 |1 R/ @) u虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。

; ^) k, {3 F) B( o& e8 Z/ c" u+ O$ @. ]* w
  i; u, }5 t2 Y
" U% Q; j: t4 c% m( r
$ d9 [. M$ A2 ^' a' I3 `6 E* M$ S
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
1 ^+ F+ s. g9 \4 v& ]& L9 L1 l==============================4 Z, E( k8 p" G
【目录结构】* Z& C0 [5 P4 i2 n
upload/
6 e% Z& _5 a" N/ y, k# z- d; F├── html5avatar.php        插件后端接口(核心逻辑)
, N' w. r( Y( x; T! t└── template/
, @- ~& h1 g; l6 F        └─ default/3 m8 B" N2 m- t6 u4 I! `
            └─ home/
% S; w$ s# {% L: [( w& K                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)
  G& Y- V  W! W7 U# ?/ S( B7 p  ^2 S4 }
【适用环境】
. s$ U, @" ^/ Y) ]4 r% I- Q- Discuz! X2 UTF-8
& e* |3 K3 _2 U1 F, q0 f- UCenter 1.6
" }' s/ O( e2 B2 S- PHP 5.6+
% z7 }$ ~0 `; m3 R& D: C' F; B3 [. u) A2 V# D4 ^: g
【安装方法】4 @/ s0 H, P- W0 U; S9 n
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录
' z1 G- ?( p' D: _  M% G) A$ z
7 i7 V. j, K, l7 E- S. p' i2. 特别注意:
5 s3 g* L- G: j( h& ?, c   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm
- ~! z+ F( `4 @, |* x+ f" D! g4 ?   (如果你使用了其它模板,请自行替换文件标注部分代码。)
' s( R1 @0 D+ h% J# k# W  i
2 d0 n$ X6 Y- l7 A: j3. 确保目录权限:" a% y" s2 u" ?6 @! S6 P
   chmod -R 755 uc_server/data/avatar
1 ^* S0 W1 }! @$ A7 Q$ N7 p: g( u$ ]- M* y8 n
4. 进入:
2 \0 `+ J+ @8 y- B1 f$ U2 Z   点头像进入 →个人空间 → 编辑头像
0 _6 ]3 D, z; V3 _, u6 z5 N   即可使用 HTML5 上传
: E: R# _% h( C: G& Y4 G# x9 |  L+ o
: N9 S% o7 V7 p- T7 Z, Y- J【说明】
, H3 E. F3 s4 s+ O3 D- 会直接替换 Flash 头像入口
6 ~- |+ U  e" x/ ?' @) `4 u; b, H- 无需安装、无需后台开启& U5 x* l: x$ _0 o- I3 ~. g4 G
- 不影响 UCenter 原有逻辑
" U; L2 ?. f* N# _- 保留头像简单裁剪功能(Cropper.js)
0 Y9 q( @2 V7 D! t# P! w" a- 仅新增一个htnl5上传组件

6 R4 ^% c: b) a7 I4 ]! G/ U! z8 m1 P; t! ]& c: S5 ^  Q& K) S8 ~2 i
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {& j# }2 `/ U6 N- H- }% r% f  b
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));+ z' V# F- I9 _
  3.         switch($ext) {" K* ]# ^0 `% s, b8 K% P
  4.                 case 'mp3':, U! t4 l) y( R! [% G. m
  5.                 case 'wma':
    % J3 s/ f1 n& t$ M
  6.                 case 'mid':. c. C8 [9 O# @  o
  7.                 case 'wav':# b" Z7 {8 j/ x
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    # g6 \4 H4 j" I% A  s! B
  9.                 case 'ra':
    : {$ s& [" L* e9 n
  10.                 case 'rm':
    - f& r% l  o$ ?: A* P' O) Q; e/ V
  11.                 case 'ram':6 o; o; }) k, S7 ~! w& }' \& i7 a
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    % F& r$ e% x' ~  ~$ v' h
  13.         }/ H+ T5 F' T0 Y2 W
  14. }. L5 D2 {2 z8 o% r* q
  15. ' V  e* @& x9 x/ p/ Q' i
  16. function parsemedia($params, $url) {
    3 F7 V! ^+ G: S3 z
  17.         ...- O% r7 k4 N: p( D6 w
  18.         return parseaudio($url, $width);6 j5 i, @4 w7 \9 W8 ~- U0 Z
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件$ T8 I  j2 D7 Q8 l+ S' G' t$ s
  2. function parseaudio($url, $width = 400) {3 h7 o* V% _+ \4 a8 p7 o9 ?- L+ A
  3.         $url = str_replace('\\"', '"', $url);
    2 c8 R0 f0 l; k( Y
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));9 W5 h, A$ h$ g  M
  5. 6 X# d, I. a# a6 u) g
  6.         switch($ext) {3 g+ S3 c& p' v" E/ F! {/ {
  7.                 case 'mp3':* K& p0 N8 L  W; ]+ v, A' R% U
  8.                 case 'wma':8 z; t; t" u( R: Y* T
  9.                 case 'wav':5 E) i! A7 U  m- q, L; D: P) @
  10.                 case 'mid':
    1 c7 n( H- H, d) r
  11.                 case 'ogg':
    1 Q. F  P* \% a/ w
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    ! n: u* K$ b4 w6 H8 q  F7 Z
  13.                 case 'ra':
    # p) _: U. ?# S! i) O/ u
  14.                 case 'rm':* G' A" o  K4 I/ l5 X
  15.                 case 'ram':
    3 R8 z- N0 z! T) a$ a
  16.                         // RM 无法 HTML5 播放,退化为链接
    / f& a  j% i1 r0 V3 _* m
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    " Z  M! o4 C/ ~+ ?5 h! M6 G
  18.         }* |8 a( A4 Z, g) y
  19. }1 i1 U: t5 }! B& i

  20. 6 e5 i. C7 ?+ S% F" o
  21. function parsemedia($params, $url) {, t5 }( D% D% L, G$ y2 `

  22. 3 o7 Z* O( B. v' h
  23.         $params = explode(',', $params);
    . |2 D, {+ C/ S5 P1 }* E+ D1 z- d
  24. 6 I' J! g$ h" C* O( W' @
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;* k  \- m  O4 t4 K
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;% Q+ U( |" W8 S
  27. , t6 U% H5 J' H( A3 J8 I' `5 ]
  28.         $width  = min($width, 800);2 n% R/ `/ ?9 ^) B" H: T( i
  29.         $height = min($height, 600);
    ; z  H, ?2 ~7 e  j, x

  30. 1 b% q9 m3 a: D/ W5 p  R; V
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));! p$ Y. j' v5 E, _& w
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    ; c3 P5 @, f5 A8 [. C3 s

  33. % l# S$ }. b. q  s% d7 h' E
  34.         /* HTML5 优先(现代浏览器) */4 Y3 H8 P9 L8 P- k3 m
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {; `% ]: Q. Z4 A
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">
    & Q9 L/ d) D5 D3 t1 U
  37.                                         <source src="'.$url.'" type="audio/mpeg">
    * X% x: g  a( H0 ]
  38.                                 </audio>';6 Y! ]+ ?  F* |) `1 x
  39.         }
    ' B8 H4 I) K8 g: H

  40. 1 R% l$ ~: H  [2 P% ?/ ]5 u. i
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {/ J2 J+ r7 f& G$ c" f/ T
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"% h$ ?, o8 M2 O* q( s8 y
  43.                                          poster="">
    ' i; t& P' B7 R# W0 P, B: E
  44.                                         <source src="'.$url.'" type="video/mp4">
    0 Z5 A; N7 l1 Z6 X0 s# S
  45.                                 </video>';
    ' n5 r$ W. d6 h, n( `0 T/ @( b
  46.         }
    : \: n2 Y: h4 V  m/ x- ?
  47. ! W& P: |6 j3 F. f% Q
  48.         /* Flash 逻辑保留(但不指望能用) */. h* z9 Q! H* ^& m5 N# T0 v  @
  49.         if(in_array(count($params), array(3, 4))) {& c  e1 {, k2 k: Z" T" c" {) Q  {
  50.                 $type = $params[0];/ q  v" G+ ^" ]' o

  51. 9 k* \5 r, o8 E+ y
  52.                 switch($type) {0 }0 S. C6 ]0 B
  53.                         case 'mp3':8 C/ N- i( m" x+ u" _: C0 g+ n" v7 A' Y
  54.                         case 'wma':
    ! r1 Q. B5 t3 l7 L. f0 U
  55.                         case 'ra':: @$ Y& \8 ?* t: C0 [! U# x0 r; ^
  56.                         case 'ram':
    $ i6 z! P( U" S. P
  57.                         case 'wav':0 W  Z) L. B( V$ j5 c3 ^$ {
  58.                         case 'mid':" M# y  }9 {/ b0 s
  59.                                 return parseaudio($url, $width);" r) m9 N4 s/ @6 p* A3 r& m
  60. : s$ r# ?1 S. ?
  61.                         case 'rm':# c) d. }: O8 k' l; s
  62.                         case 'rmvb':- A5 m6 t: @5 Q. A- ?2 B
  63.                         case 'rtsp':5 J( J8 J# ]" ]9 Z2 O. n
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    6 r  a$ x5 }. H
  65. . v3 c7 z! Z4 C2 o9 A3 M
  66.                         case 'flv':# R2 I( T: y# ?: Q/ |& m" U
  67.                         case 'swf':  y& n" Y4 U) s# l! Z) a1 Z5 d8 Y
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';4 }+ K4 t$ u# I" ^

  69.   k3 P; ]7 R! ]1 g6 f
  70.                         case 'asf':1 E# A" x; U6 C2 Q2 J3 _3 |: v
  71.                         case 'asx':  R& v3 x* f9 K' m
  72.                         case 'wmv':
    8 w, x3 }" ^; n; o& E; C; T. v
  73.                         case 'mms':* e: V( H" y. Z; s& U" u. |
  74.                         case 'avi':
    , z$ }2 u! c- R8 @3 n, G7 ^
  75.                         case 'mpg':4 \0 t& Z( u* V) y4 g
  76.                         case 'mpeg':
    0 F1 D) e2 M2 a9 i8 |
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';+ U1 c2 G2 G& {7 w! ^7 D" J
  78. $ W0 G. w5 R: |) B
  79.                         case 'mov':
    ' [7 I0 ]& F; K( H9 M. r
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ) N1 E( T5 L) b+ p! j
  81. 3 @9 m& y1 X  ^+ L& _, t
  82.                         default:
      L: _: s, L0 ]2 w( x- q, T. b
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';0 f. P) E$ N2 ~
  84.                 }( w* e; a! ^( f; i3 N9 {
  85.         }6 W$ u- w6 b6 p1 @) h! J
  86.         return;
    + i1 P3 H7 ^/ ^, {  @) P! R
  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) {
    - ^# o: h: N8 n# ]  o
  2.         $w = !$w ? 550 : $w;
    % W7 q* I2 i9 z8 N
  3.         $h = !$h ? 400 : $h;5 \* C6 I! }$ Z+ V4 _
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);8 f0 c) [0 u" A
  5.         $url = $matches[0];3 K5 ^2 ?, h2 l% o) F- n
  6.         $randomid = 'swf_'.random(3);+ @& B4 [; X- C/ @8 i8 c; U
  7.         if(fileext($url) != 'flv') {5 v( e% s/ z  B* x( `
  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>';
    - ]/ o1 e* \, a+ q4 f/ ?4 N
  9.         } else {; p& i% L: E! q
  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>';& y' r7 j5 }, U% o
  11.         }
    0 h4 u) `* E. ]
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {& W$ L* C8 k- c. b, O4 s
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';
    5 i7 e& a: _+ K# R7 C
  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 15:45 , Processed in 0.026414 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部