【高州情】高州人深圳站

 找回密码
 立即加入
查看: 581|回复: 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身上,
- k9 p  y3 h4 X+ G3 E用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,+ V1 Q& w9 u" w  V& i: x$ s3 D
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。

: ^9 h( }# @- p7 X: w5 W3 W2 k
$ _% u8 o6 y' F+ q2 o* p% H+ y0 e

# f3 \- d7 m: G6 W% {& X6 o1 ?- A% G
0 S& W7 W1 h9 I; C" E( r1 W
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
; _* R- ^+ F6 D2 X0 E==============================
3 n1 O% ~- g, F& f. W# S; }【目录结构】
: h' w1 t3 O# ^0 D9 n0 uupload/* }4 |: W- [& U: t( V: B2 o
├── html5avatar.php        插件后端接口(核心逻辑)
, s' {, V' o) K1 |7 r└── template/
' P" N% \7 w# l0 M3 z8 T5 [        └─ default/
. t2 M# @6 g+ B            └─ home/
% }& |: Y; v9 }5 H2 {/ y                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)9 e3 R3 \/ m" a  Y+ W2 F8 I2 I. r

: V! T. m/ p  g7 g8 ^【适用环境】% v/ C2 @) b! z7 Y. L
- Discuz! X2 UTF-8# G/ g( K- h4 P. e3 n
- UCenter 1.6
! }1 }. F5 `- W6 i- q- PHP 5.6+% ?8 i" J2 u% S+ K- Z
+ |( M! T1 k2 L% Y9 s& ^+ @
【安装方法】. r$ q6 l# }: S$ E4 d) w" o+ x0 v$ m7 {
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录
/ f$ i9 q" |9 r, h5 Y! p! S+ ^  q2 o4 I2 o
2. 特别注意:
$ M$ U! v0 `1 s  e   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm
- z4 u* z7 R' x  Y+ Y3 ]. c   (如果你使用了其它模板,请自行替换文件标注部分代码。)5 k# a& T* C5 c
2 C  w* D) s1 w& G' s/ Q& ?& Q# }
3. 确保目录权限:
3 b7 ?5 K, r0 p) ?% D   chmod -R 755 uc_server/data/avatar2 J  z* o. K. y4 L+ w& X+ |6 g+ V, b4 a
7 Q1 }+ f: G% ~+ l
4. 进入:, K% @2 \" t  l/ Y, \( Z' M
   点头像进入 →个人空间 → 编辑头像
7 o9 M8 \6 R  A  H: y   即可使用 HTML5 上传
4 `4 T* i& o2 b* u& B* q7 @) }/ U4 C% i; C) P! r2 C$ U
【说明】
& L9 d1 m+ s0 A/ O9 a' s6 c- 会直接替换 Flash 头像入口
* r( C3 m, J/ b7 c8 N8 ~- 无需安装、无需后台开启
3 A, H* l. ?) O+ b8 `$ G& V9 u- 不影响 UCenter 原有逻辑. Z$ [9 G3 e: r& Z/ N
- 保留头像简单裁剪功能(Cropper.js)" I) P+ P, G4 D# X2 T" b) H# A2 T* n
- 仅新增一个htnl5上传组件
; u" X( p7 w3 A5 v. L
% {0 F- }# M0 i3 D
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

Rank: 1

金币
53
贡献
0
威望
2
最后登录
2026-6-9
帖子
1
积分
5
UID
3000
6
发表于 2026-6-9 20:41:31 |只看该作者

管理员

论坛测试[砖]家

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) {8 r, z2 r% p" F( x
  2.         $w = !$w ? 550 : $w;# c3 ^, l( o4 y& c
  3.         $h = !$h ? 400 : $h;/ y2 O& \) P4 c
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);5 J; x$ g! S8 r- J* w. J
  5.         $url = $matches[0];3 W0 P: z4 d9 }' a
  6.         $randomid = 'swf_'.random(3);
    9 F# F6 ~! E4 T7 r) ]% S
  7.         if(fileext($url) != 'flv') {2 h2 Y$ H6 C' ]$ x; 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>';: x# Q; {& @- X- T
  9.         } else {
    + P1 x( {% |# N$ q, D# 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>';
    & m% \7 E% I' `7 `; F# b
  11.         }
    , y' `( R; b8 d1 E
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
    ) k3 ?, ]% _# B7 h& e6 ^! ]
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';# r' @( q! y% Z# K. R
  3. }
复制代码
这个世界只有10种人:一种是懂2进制的,另一种是不懂的。

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

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

管理员

论坛测试[砖]家

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) {
    0 N) C( |2 P! V
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    ; V& R& _$ p) y
  3.         switch($ext) {1 D7 @( Q* e4 K! d
  4.                 case 'mp3':
    $ m& H" Q1 F5 F7 _8 v
  5.                 case 'wma':
    8 {& S  U) ?- U: V5 b5 h+ H+ W. @
  6.                 case 'mid':
    , ?. j0 O, a3 o: \, Q: z
  7.                 case 'wav':0 L3 X; ~% f& L9 @/ \+ }
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';- Y, C; z3 f4 F. t( E
  9.                 case 'ra':; \% z9 O" J5 t: `- [( M6 `
  10.                 case 'rm':
    " n1 P2 J6 s- F% r' V& h  [+ @7 ?
  11.                 case 'ram':
    + o$ c& ~" ^6 w3 _+ A
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';% |, `5 a' m: P6 n" |+ ^! n" S( t
  13.         }% Q: `9 Y/ p7 d6 B7 X
  14. }( b. `# }; M1 @( s4 E' j

  15. 9 A& \" m/ Z9 M- f5 {8 R
  16. function parsemedia($params, $url) {3 l0 Y) t. x2 h. K. e% Y* k- M
  17.         ...4 N7 \+ r3 l, S: l
  18.         return parseaudio($url, $width);& f6 ?9 ^; D$ P3 |
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件7 C- L3 Y* E9 }  x5 f' P
  2. function parseaudio($url, $width = 400) {
    2 v$ S+ Y' Z% L$ h; q9 W
  3.         $url = str_replace('\\"', '"', $url);
    & K& Q& A! N. h( e/ C
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));3 D, g$ f" @+ X2 g) d# S! r  i
  5.   ?0 t% N% C5 B  z- f! c2 k
  6.         switch($ext) {
    / @" W0 K% r2 G) d6 `
  7.                 case 'mp3':
    5 M4 ?6 ^5 m4 A) L$ u* P9 ?) u
  8.                 case 'wma':
    : q1 P! o# c9 k8 R/ U/ C
  9.                 case 'wav':
    $ l3 S- V, F! F7 U; C
  10.                 case 'mid':
    . Q- H( w8 `2 ?( ~4 R- o* j" p
  11.                 case 'ogg':+ P" H+ Q. D5 z2 t, w7 j
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';3 `% b" P8 D; u2 I! x
  13.                 case 'ra':
    * V0 X; N' N* H
  14.                 case 'rm':
    1 r) o8 |$ E1 p) D
  15.                 case 'ram':& X7 w0 c2 x# J2 |1 `- w. \  C2 h
  16.                         // RM 无法 HTML5 播放,退化为链接* i$ u9 w- T! F4 l2 e; X- I
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';. m' |$ J$ W, f  {3 r/ y
  18.         }/ h! j. f" x& C
  19. }
    5 S+ b6 f4 _( k7 E; W& z. L
  20. 4 i! v* k/ w% R: O5 a/ I
  21. function parsemedia($params, $url) {, Y3 D  i' ?8 n" i* T- ]

  22. # T9 T$ v: _* a# F2 t
  23.         $params = explode(',', $params);
    4 X& G. |: B, P- p( U4 S% e7 [

  24. + w; A8 I8 P* W) L$ H( ^
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;$ g3 W* Y3 Q) N) F. A  F
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;
    0 s1 n% h' I4 r8 b  H- P5 s0 a

  27. + _5 s+ o  @' ^7 w
  28.         $width  = min($width, 800);
    3 c5 |! p& u6 z
  29.         $height = min($height, 600);
    4 l0 c4 t" e: h. s8 ?

  30. # g/ c1 I! k9 ]) |% v
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));' n2 n# ]$ y0 X* ]$ _
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));0 `& k+ k# X* j! {9 _0 X1 l' P6 k

  33. ( S  y9 a7 @( Z4 Q: S
  34.         /* HTML5 优先(现代浏览器) */& W" a# Q8 b; r& W: n2 |3 O
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    / b- D4 z. h9 v  C8 G
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">+ _& \2 }/ d) `! X4 l/ L5 U  O8 y) p
  37.                                         <source src="'.$url.'" type="audio/mpeg">; F  s- U7 |. v& k: U: O6 v  H% q3 T: q
  38.                                 </audio>';% P6 f- F/ D# Z% i, @& I& |8 q
  39.         }& n& @5 P& L7 [# b, d% v4 k+ w

  40. 8 `% n7 m& @" `4 c8 M4 m
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
    ( ~0 W8 I0 ~7 f' x9 K  r
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"  c" e9 h1 |! y5 B& E
  43.                                          poster="">3 i) h/ m1 t: ^
  44.                                         <source src="'.$url.'" type="video/mp4">: \. m/ _* j7 s2 _
  45.                                 </video>';7 e, l2 M$ K! f; E8 z5 x3 \
  46.         }
    : B  y; C( ?* U- G8 l1 K+ ~: \
  47. ! v5 S. d" B( _' `) ~( e
  48.         /* Flash 逻辑保留(但不指望能用) */
    7 g% a) O3 t$ n  W
  49.         if(in_array(count($params), array(3, 4))) {
    ! q) Z6 K/ R( C! i
  50.                 $type = $params[0];& `! }3 [! [6 k8 Y' E

  51. ; `. y0 _  ~5 b- ]2 \4 M
  52.                 switch($type) {1 J  i/ ~( t5 r. @  P' E$ {( B
  53.                         case 'mp3':
    7 ~& R4 x6 a( ^% N: O
  54.                         case 'wma':' W, C& [7 s; s1 r2 y4 C
  55.                         case 'ra':
    * b6 Y) @0 v# _  D7 q/ E. Z
  56.                         case 'ram':
    9 E( [7 H( x) i" z
  57.                         case 'wav':
    ! \2 K& F  @0 N9 S3 o1 S
  58.                         case 'mid':
    ; W6 x9 J) |/ b5 \
  59.                                 return parseaudio($url, $width);/ [: \0 E5 K- u7 R; G

  60. 4 R5 S& |! j. l, y. j6 ~
  61.                         case 'rm':3 c% L7 u( l- t( R
  62.                         case 'rmvb':
    . d9 V6 ]4 N7 u5 j' M7 {" r
  63.                         case 'rtsp':
    / H* t. [$ w( ~* S: Q
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    7 d& w# R8 q. W4 X

  65. 5 ?7 z! H/ Z  T; X
  66.                         case 'flv':3 _9 v8 q6 b" i+ l  T0 H
  67.                         case 'swf':( J8 [% p# k! S+ d
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';8 n+ @" M/ R3 ?1 _' H: I  Y

  69.   V1 o  {1 a8 P( o( h4 K
  70.                         case 'asf':+ W/ v& P# {& X" [( b9 g" P
  71.                         case 'asx':
    & S0 G0 ]& I3 w! }$ D. x3 z# T
  72.                         case 'wmv':
    & w; Q% w6 ?( _1 ]) i/ L' v
  73.                         case 'mms':# D+ Z+ b6 A5 z( c! f
  74.                         case 'avi':
    6 u$ W& x: ?" o
  75.                         case 'mpg':
    4 ?" x& u% [. @8 e
  76.                         case 'mpeg':# x0 F) R9 C* ~: V7 d6 n, _$ O
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';% }1 B5 \# n+ b2 r& r0 L

  78. % {) {/ E0 M3 t9 b- o3 }
  79.                         case 'mov':
      U5 ~+ Z1 V  ]3 d+ \
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';& |, m/ z+ }* P1 k6 C6 T

  81. ( P: A( t. l' ]( V" A( s$ m
  82.                         default:: _0 s8 A, ?  O! e4 \6 F! y3 H
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ! _4 @$ }2 n5 `# N) t2 M( Y
  84.                 }
    6 ?/ a6 U: `; M% L5 v
  85.         }
    ; \5 o! x# n% Y* b3 B4 Y( E4 j, {
  86.         return;0 r% A2 q$ ^7 s/ k- f4 N
  87. }
复制代码
这个世界只有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

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

2
发表于 2026-5-10 22:58:22 |只看该作者
打包收藏放这,免得老人痴呆
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入
这个世界只有10种人:一种是懂2进制的,另一种是不懂的。

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

个人业余电台:BI7ILX   守候频率:1343212JJ08
您需要登录后才可以回帖 登录 | 立即加入

Archiver|手机版|高州人深圳站

GMT+8, 2026-9-22 03:44 , Processed in 0.029779 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部