【高州情】高州人深圳站

 找回密码
 立即加入
查看: 759|回复: 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身上,/ P8 `4 T5 r' c; X2 x4 z# p7 b
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,
% g" S1 [2 w, {% \" u  g虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
; W8 ^+ z6 }% w" `; X
# e' h) k  K8 s' t
" s& U1 b, i/ Y% f

% F" X3 e! @. s" l, x( l' l# L6 L& A2 a6 ?+ p
Discuz X2 HTML5 头像插件 v1.0  2026-05-05; t  h1 B; v7 q* G0 @% M+ S1 I
==============================, c- H" q1 d. Q6 c
【目录结构】
8 T6 c1 U& f( ?( l5 Y" E; h& \/ ]upload/; m" ^% x; f$ p4 N7 g
├── html5avatar.php        插件后端接口(核心逻辑)
8 o6 E- Q- W0 d8 T+ Y/ j└── template/
9 V7 T, j2 q5 ^4 c        └─ default/
1 e8 B! C, r8 X            └─ home/2 F4 n4 ~1 a6 j4 D" j9 `9 j
                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)
/ a4 R5 d0 j5 u' E0 ?
" S- ~8 n, F5 Y4 I【适用环境】$ r3 t- w3 v& ^; P: B8 h$ p6 f
- Discuz! X2 UTF-8
* r, a  ~/ P: O. m- M. @/ G! ?) [- UCenter 1.6
  G" X! d! c7 E* m" b: D- PHP 5.6+8 c( |/ o; T6 s0 o, g/ J% Y

5 x; S9 c6 F8 G6 C【安装方法】% [! d# P2 ~" z$ v
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录
. t, X1 q0 r' P; ?7 A
& Z! ?0 c- q( h- E0 Q2 {+ C2. 特别注意:
) c$ o2 t9 ]7 r( a; P   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm
1 J7 u, m% t5 h   (如果你使用了其它模板,请自行替换文件标注部分代码。)  I5 x5 g2 ]9 Q, ?8 M6 m; C
, M+ J" ]8 l/ ^! U" R8 u9 H$ g, W
3. 确保目录权限:- {5 r1 k; e4 X1 U; m% M' k
   chmod -R 755 uc_server/data/avatar
: f  w: b8 [3 K
1 P. H6 H: w+ |5 r4 o8 m9 o; N+ i4. 进入:
# r) D4 P( U, ?# O   点头像进入 →个人空间 → 编辑头像
/ b2 y  x6 Z0 m1 K2 K   即可使用 HTML5 上传
4 r% b1 n1 q% g$ h/ z0 B8 p6 S
, e7 p6 I( Q0 k: ^【说明】
5 E  v) I% u* T1 i/ L" P& B- 会直接替换 Flash 头像入口
* u' K6 R, Y6 p- 无需安装、无需后台开启
9 ~( O2 f( |7 F' c& S- 不影响 UCenter 原有逻辑0 w; {* r& N1 z  J8 |9 |/ P( T
- 保留头像简单裁剪功能(Cropper.js)
; c' d5 k5 V) o! {7 r- 仅新增一个htnl5上传组件
( V% @# @2 F7 s: U6 M

, s' a5 C( N& h2 X# z9 M
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

管理员

论坛测试[砖]家

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) {
    2 T; w: r' o! R; b( R! @
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    8 n0 s6 Q# y& H! G6 C* q1 `
  3.         switch($ext) {
    * k  s& f5 R  t( C
  4.                 case 'mp3':
    + Z. @; q# \9 T( q
  5.                 case 'wma':' h$ |! g! i- w/ C
  6.                 case 'mid':
    $ k, f5 Z/ j$ L' n9 u
  7.                 case 'wav':
    0 J1 h" Q) C- l; x- f/ M; U
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';7 ^2 S* C9 h' ^4 i) ?
  9.                 case 'ra':: H% x5 T+ u, ?* N
  10.                 case 'rm':5 `5 E8 V0 {2 X7 M: Y! j, T% p
  11.                 case 'ram':
    - x& R' x& X, _5 b
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    7 q* S( {4 L) o0 ]( Z; K9 |7 M
  13.         }" N# m' u7 O+ D( ^. s
  14. }" R8 Z9 O# i! c1 g# s
  15. 0 J( n' p+ W5 D5 b
  16. function parsemedia($params, $url) {% a2 @9 l# V% K: c3 R' I2 G7 F/ L; n
  17.         ...4 C% V: S3 J5 p. p* ]
  18.         return parseaudio($url, $width);
    & G' ]' H+ d3 v/ b0 z
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件+ G* X. v! l; q$ m% O8 C' ?3 j
  2. function parseaudio($url, $width = 400) {
    ) ]3 _8 f1 f% Z9 k
  3.         $url = str_replace('\\"', '"', $url);4 {3 ^9 W0 y  d' d
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));. F- S$ S. f) q! E) u

  5. ( q3 o, s8 {9 ?% }' M
  6.         switch($ext) {2 ^3 D' _  [) Q) W! n! J
  7.                 case 'mp3':
    7 v; g; `, R+ _7 o0 ~5 _
  8.                 case 'wma':8 v9 M2 ~+ J9 c# Y: m" _6 D
  9.                 case 'wav':
    2 g* [7 U) `0 Q6 q- n8 X7 F0 ]
  10.                 case 'mid':
    / }  y' D1 N- A. I3 x% Q1 s
  11.                 case 'ogg':" h' h( s4 y& q  f2 f& n0 J
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';8 Q- U9 H1 p8 ^& ~. x
  13.                 case 'ra':& q" \2 e- F( m8 S% N, r  |/ R
  14.                 case 'rm':- g) M5 k! X3 u0 m2 ]: |2 z( T0 t
  15.                 case 'ram':
      h$ N& v/ R& i( a" y2 c
  16.                         // RM 无法 HTML5 播放,退化为链接; Y% ~5 {' H& {9 y) y
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';- Z+ w1 V- _7 m( e9 M7 h- z
  18.         }- n) ^( r8 u0 ~( r  l7 S1 U6 g
  19. }( x! v6 B' q  O
  20. 5 M# v, ?" {5 y0 Z! i7 y4 l6 I
  21. function parsemedia($params, $url) {8 }$ {  z0 F- j# o, e0 y
  22. ( X0 Y' l, X+ ^& Z5 H
  23.         $params = explode(',', $params);
    - J9 v( \. Y; C

  24. - I  c( n* W+ @7 H: c
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;8 D: B0 e# z( g! M; }3 d  F/ g/ r
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;
    ! A  B6 j: v  _7 t

  27. 5 n* _' K- o2 D& s- [8 }& K
  28.         $width  = min($width, 800);
    " ^4 g# S% L" _+ l
  29.         $height = min($height, 600);
    1 R  z, Q% T; {+ I' U. b( m9 \
  30. 1 R; {$ d  a; W1 p- `
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));
    : C! n9 b& i. p4 Z0 E
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    / C  C+ h4 |+ p; {

  33. , L$ e/ s' W) {' Z. Z& G. `% b
  34.         /* HTML5 优先(现代浏览器) */
    9 b( ?! z; Q6 e* C& M
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    7 I# [1 |+ {9 O9 E. `
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">
    : Z3 ^/ ]( V9 W8 U$ }* i; ?# p
  37.                                         <source src="'.$url.'" type="audio/mpeg">
    / X0 ]- A* f7 O9 G" \: o; _) c1 E
  38.                                 </audio>';
    6 |( w  _5 |7 Y5 C& g# D! I
  39.         }0 r) H* y2 w* G# Z

  40. ( r. r. C- R* e, T
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {
      y/ Z7 ]$ p, ~  y% b5 W
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"
    4 M6 S7 J" W, t2 H  X  }6 n& w6 M
  43.                                          poster="">3 o4 }6 m1 d2 h; Z, ]; ?7 d
  44.                                         <source src="'.$url.'" type="video/mp4">
    : @/ {+ g! X- Q+ z6 _# |
  45.                                 </video>';( ~8 E; x- O4 `1 P/ h2 B
  46.         }" T5 I/ K: I0 p
  47. + b3 a) @/ a0 `6 q8 n
  48.         /* Flash 逻辑保留(但不指望能用) */
    1 [  Y3 K# s: J
  49.         if(in_array(count($params), array(3, 4))) {
    % B" J9 K2 p! L$ u3 t& p; b4 t
  50.                 $type = $params[0];
    ! C0 J" ?8 s7 s5 f# U' p% q7 {

  51. ) o5 D: `8 W2 L; ^$ i
  52.                 switch($type) {
    1 r* Y5 s$ q& Q  r8 p
  53.                         case 'mp3':
    2 @& t3 a& ^4 W, j. r% x# @0 `- ~( ~
  54.                         case 'wma':
    5 T* T1 m% G# C! m. c
  55.                         case 'ra':
    $ Z( ~8 l( C6 `; ?: z! i
  56.                         case 'ram':
    0 z+ a, s1 d( E$ c8 l
  57.                         case 'wav':  Y: D- j3 {0 J! q) i) r
  58.                         case 'mid':
    ' |' R% ?4 ]0 H& ~! p0 P, n
  59.                                 return parseaudio($url, $width);
    9 Q8 @( b3 N7 h: [8 ]8 Z5 |
  60. 6 |7 g1 R3 i- P8 l& D
  61.                         case 'rm':6 I& e, H! l0 H: S5 O& w3 V
  62.                         case 'rmvb':
    1 I" K, g" ?+ W/ [
  63.                         case 'rtsp':' ?- [- M8 Y1 x8 b8 a
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';% ^' I: L0 l8 @* e4 S
  65. $ K% R0 W# }: R. \' _$ e
  66.                         case 'flv':
      d/ h5 d, A: d2 A1 h
  67.                         case 'swf':
    % l' \2 m0 @0 i1 l
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';6 x/ t4 S  }# |; x* R
  69. - G+ @2 N: A7 {' x! q: F/ y5 o
  70.                         case 'asf':' k6 i2 n3 \4 u% l4 `; l
  71.                         case 'asx':
    7 K9 k  I* F7 R6 y# z& P
  72.                         case 'wmv':
    4 C( S: U4 \: ?* F% }. e% g
  73.                         case 'mms':
    3 o/ u' D: P4 L0 F
  74.                         case 'avi':
    0 g8 }2 i) v5 J, r2 _7 a
  75.                         case 'mpg':9 @0 U" D9 [" h( d0 s+ r
  76.                         case 'mpeg':& E6 e6 c9 j6 ~, w# J- q
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';/ q, c' M3 I7 Z, l2 Z' ^
  78. : C6 z! D1 d+ M5 J" e4 e
  79.                         case 'mov':! I& \( R( ~1 t+ z5 J
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';- K" n, f# ~- n. c' G

  81. # S" }) g' U! G& c
  82.                         default:
    / Q. K1 I; u' K2 l
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';7 g5 T; ~/ [- W/ _0 u
  84.                 }: D( t1 [# V) }# U8 B* ?
  85.         }. G( l% {7 `0 z9 X
  86.         return;
    % E5 H6 N7 U0 `7 T/ Q, z" X
  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) {
    : a2 E8 \- J2 _
  2.         $w = !$w ? 550 : $w;3 c/ t8 L8 h0 X" c, b
  3.         $h = !$h ? 400 : $h;& S8 E  p5 }6 m# h
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);' d7 L, t* P5 t- O
  5.         $url = $matches[0];
    + o8 f; `7 B+ F" o
  6.         $randomid = 'swf_'.random(3);
    / w  `" m& \' y; B4 j1 h
  7.         if(fileext($url) != 'flv') {+ }& J$ E& U8 w
  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>';8 B! F$ P7 Q# X+ D& `" I! i- M1 b
  9.         } else {
    ; C1 I. I  h8 D1 D9 i
  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>';, U! I) p! t. a$ |- V1 A
  11.         }
    ; F4 y1 L7 r+ Q4 O; g
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {4 P+ p8 ]" N8 Q0 X
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';5 B/ R% ]0 U( H# g, I9 `4 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 19:41 , Processed in 0.035483 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部