【高州情】高州人深圳站

 找回密码
 立即加入
查看: 374|回复: 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身上,
, K! g  l2 m2 J0 M# v3 \% k用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,
7 L) {# q( E2 x6 b1 g2 X虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
5 |% h8 @- c5 o* h8 z  ^  [/ m

0 r& @3 ^2 N! B  N
! s6 E# w0 X9 j7 c% m

& j) h3 @1 B; v. {
8 j& b$ b5 _0 d8 }" l' k
Discuz X2 HTML5 头像插件 v1.0  2026-05-05
. T" e/ ^2 k) s' J: Q0 q) J==============================
7 o3 q5 ~. K$ A' W, R: ?9 \' Y【目录结构】, Y" i) a3 C7 h) D* s. ]
upload/
; p$ E( Q5 i  u3 o0 b# ?├── html5avatar.php        插件后端接口(核心逻辑)
6 m# l5 W+ b3 c7 p# ]└── template/2 a+ w4 h& p% U% r% x
        └─ default/6 }1 r: }0 y- S4 D6 d5 T  J* u
            └─ home/+ S/ F6 J% f3 V" a, D
                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)! Q- Y$ ]$ D2 G, B
0 e- N9 V/ w: J, Z2 n' s) C9 V2 a
【适用环境】
% n$ Y6 S" B: }; A: \- Discuz! X2 UTF-8
' Y: ?3 G, F  Q  P- UCenter 1.61 g0 C' P5 r  q5 [$ O
- PHP 5.6+
$ I1 l3 q! h' u6 F9 v% @0 @3 K# P5 M5 K& H) X4 q# G
【安装方法】+ K) ~. \0 A$ [+ `
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录; q- B) j/ P; _. b  i- B. p& _
+ L& Q4 p% c* Y( K1 l& ?
2. 特别注意:
2 A" ]; q/ Y2 o& E6 U. w   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm
# X' M1 F) K, A& j$ _   (如果你使用了其它模板,请自行替换文件标注部分代码。)* W) C, L6 C& l/ c
" r9 d+ I4 A+ R7 f# t* r
3. 确保目录权限:, V. }7 ^( U/ f- |- S* }
   chmod -R 755 uc_server/data/avatar" n# V: D" S. c* q  c, |1 R

: g* p. h. @2 p4 b$ N/ ^4. 进入:
% |( @% ?/ m% v   点头像进入 →个人空间 → 编辑头像' N* c: c* T3 ^. U
   即可使用 HTML5 上传
- d7 }/ m* I  m: G; y6 [2 U" \+ A# {* V$ \# I; p
【说明】* Y3 v9 K* V. ]6 G; {
- 会直接替换 Flash 头像入口1 Q  ?) x; n7 `$ S: T0 x
- 无需安装、无需后台开启" C" |8 p* L, R( Z6 N& R
- 不影响 UCenter 原有逻辑8 D0 H1 m  r5 J: r) \/ ~$ ~+ {
- 保留头像简单裁剪功能(Cropper.js)
% ^* p! d4 s% s1 f. S& o- 仅新增一个htnl5上传组件

' h% c# X% w  K' N# x- C0 }: h* N- 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) {
    2 h/ x$ u: `3 m, y
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));) g( @& W- _- C
  3.         switch($ext) {# \, i# U; Q$ g0 G3 m& G* f) Y
  4.                 case 'mp3':- {: g/ m* L' V! L/ r
  5.                 case 'wma':, y+ g" V+ @! ~1 s! C
  6.                 case 'mid':
    . B( e$ K! L& L
  7.                 case 'wav':
    ) K; R1 c6 R* R3 b/ d
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';, x9 L: l6 Q4 ]! y: |7 H3 C
  9.                 case 'ra':
    8 i: ^( w1 Z  @3 Q5 Y7 i$ ^
  10.                 case 'rm':$ D) m( [, M+ y! t6 x7 ]
  11.                 case 'ram':
    - U+ F1 P. F6 L7 z* O- q7 w: ~
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';9 @3 b3 Q/ C8 I0 U
  13.         }
    + H6 U+ x3 A* Z  d* u
  14. }
    / ~8 k+ R- `7 c4 j
  15. 9 p( z& q. I+ k+ a/ J4 c
  16. function parsemedia($params, $url) {9 p- K& N, ?  @
  17.         ...# r( H  b( N1 B8 O
  18.         return parseaudio($url, $width);
    ' O% \2 `* r  W
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件" t8 [7 Q/ s: p7 _$ N, o- H
  2. function parseaudio($url, $width = 400) {
    ; N$ H& L% _% U* ~7 l! H$ P7 P; X
  3.         $url = str_replace('\\"', '"', $url);  j8 {% w/ T, ^7 m4 i# w9 U
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    4 ^; M& C% _0 x% C8 }3 g8 n
  5. 1 L8 ~# n- a1 N2 M+ A; `
  6.         switch($ext) {
    $ r( S7 h! b. `
  7.                 case 'mp3':
    " z3 r/ n  k0 T6 C
  8.                 case 'wma':
    7 T- ]; w. j5 Y0 _' [
  9.                 case 'wav':
    ( _% q$ |$ y5 Y, N1 A- f
  10.                 case 'mid':4 M9 n. s$ B& v0 ?, _. L
  11.                 case 'ogg':" F2 ]& T* R% A/ Z( O# s
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';
    - e3 _- q; x/ H7 D" R' Y% `) w
  13.                 case 'ra':
    4 m5 q5 ~, l. `5 T5 m
  14.                 case 'rm':( q& {( R- [# _/ o- Q
  15.                 case 'ram':
    4 a- X: t- [: H. }  ~2 B% ~( R9 v
  16.                         // RM 无法 HTML5 播放,退化为链接" i+ j. t& g" v; E
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    ( s) X$ f2 C3 N) K
  18.         }
    " d, U% y8 \5 |& k' o9 h& P! w
  19. }
    2 S& E# L2 \! o% w; p: d
  20. & y9 Y3 i9 K6 Y* p3 N( D
  21. function parsemedia($params, $url) {! x+ y3 }  k' u9 c& x7 |/ J" u( {
  22. # w7 U. T) l  C4 t' G! I
  23.         $params = explode(',', $params);4 Z. ~+ q6 p- m' V- ]

  24. % K% }; b( I  B7 e; G6 S
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;( N. A: |  q7 u& o
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;% _8 y, r( {' e
  27. 7 P3 r% B" a' G5 t
  28.         $width  = min($width, 800);8 |) @0 p, e5 i9 o( E4 p1 Z
  29.         $height = min($height, 600);2 J' b; g4 f: X8 Y" B1 }! _, d' n( Y% `

  30. ( S" t5 ?2 @3 _0 L, s& r. a2 Q
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));1 D! _! e* T6 ]/ E: ]
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    % h6 z6 e3 D/ M$ ?# G
  33. . u( M- U* I/ W, I  B
  34.         /* HTML5 优先(现代浏览器) */
    ; B- ^  a4 b: \9 ^: B# p9 b$ b( b7 K/ j
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {
    9 _& z' n. `$ g1 u, l3 ~
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">
    9 h1 I- {# ?1 `% X  M
  37.                                         <source src="'.$url.'" type="audio/mpeg">
    2 `$ K1 R6 L: C1 s
  38.                                 </audio>';
    4 X, \9 b/ l" v" o/ n; h6 k
  39.         }7 M! T' |" H! A

  40. - Q  ?# w9 F! Q' ~
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {) c5 v  w( `% O% N$ W. q( |8 f
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"9 m; n6 n0 H# Q/ b; o/ \
  43.                                          poster="">+ T  w" ?1 }+ v, c
  44.                                         <source src="'.$url.'" type="video/mp4">0 w6 C9 R: v! r5 }3 H4 r
  45.                                 </video>';$ E% U3 x8 a& h! @  g% _
  46.         }: c/ _$ h( o. c' H

  47. / C5 c; L$ l6 c' l$ J8 e2 U
  48.         /* Flash 逻辑保留(但不指望能用) */
    ! q8 L% ?; X9 K: R
  49.         if(in_array(count($params), array(3, 4))) {
    2 ]3 _  X4 N+ l% b/ A9 H- L* C# m% P' f
  50.                 $type = $params[0];8 i& x1 U5 o; S4 U+ V
  51. 5 O* X' o8 \# U
  52.                 switch($type) {9 G  k/ |. n! u8 o+ {' T
  53.                         case 'mp3':' F8 k; H3 t1 w8 x0 C" M) j2 A8 N
  54.                         case 'wma':9 w8 m7 X% [, E4 v* ?" c
  55.                         case 'ra':+ |5 ?) r2 X. k8 A1 L+ W
  56.                         case 'ram':
    " ]/ J5 Z/ f- b6 T! V
  57.                         case 'wav':
      l* Y, E- n6 l" }" M
  58.                         case 'mid':6 b# W7 s& u# J* ~' v: y0 |2 f( x
  59.                                 return parseaudio($url, $width);
    ( H/ P6 b0 d3 g# z" R5 q# R! s% c

  60. 1 @5 D7 |8 i7 M! ?: G: K4 j8 Z
  61.                         case 'rm':
    ' f) Q! q) t+ o) ?# A8 A
  62.                         case 'rmvb':
    1 ^! c; Z; J* p& h
  63.                         case 'rtsp':
    ) r0 q9 T2 R: e* W2 P0 h
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';# P( d; \. j, o2 X+ \* `% V/ q
  65. 3 n  N2 Y; t9 P
  66.                         case 'flv':
    : _8 C& t$ M5 l! }: q7 Q
  67.                         case 'swf':4 L3 t! F% U3 h6 S6 b$ z- W* d
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    0 Y( d+ W& o1 U

  69. / [9 I2 O# d' U3 B: f5 t, x; _0 I
  70.                         case 'asf':4 p* @6 l/ T0 r% y, J/ W; F
  71.                         case 'asx':
    7 H  i" @# O8 M1 k8 K4 G* a
  72.                         case 'wmv':
    $ h. m" H( I  d! b* ^* g) e
  73.                         case 'mms':
    # X0 w2 m8 r. }0 |' {9 ^3 d  J
  74.                         case 'avi':
    * Q! z$ ]3 P1 A/ e9 C8 x
  75.                         case 'mpg':
    0 g, ^5 T5 ?9 I9 W' E. O) j- [
  76.                         case 'mpeg':
    3 x* D, S# O* R4 l- V0 S
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';6 V9 k3 ~  R+ L" `1 c1 ?

  78. 1 b' D! R9 \, t2 l
  79.                         case 'mov':
    4 u/ M/ @1 s$ _! @
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    9 F1 H: Z- U2 z% O) h3 j# p9 e

  81. 0 O$ d- j5 r% H8 h0 T" R
  82.                         default:- r% Z" y( @5 c8 G5 B: R
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';( A, |/ [6 A' l2 y
  84.                 }
    ; S% K- q) _' G$ E; H# N) T& w
  85.         }, g4 x% q) f$ J$ P* C
  86.         return;+ H) F+ l# v9 G, Y, c" F5 S
  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) {
    ( A7 j6 C! @  s% ?% L
  2.         $w = !$w ? 550 : $w;; I7 y  f, I, k7 [" a3 J
  3.         $h = !$h ? 400 : $h;
    8 s& E" ?" G5 U  [" m4 @% b1 a
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);- |- N' S' p( f/ O
  5.         $url = $matches[0];/ w$ i$ Z- \6 @
  6.         $randomid = 'swf_'.random(3);; F6 z- H/ {- a' l1 ~
  7.         if(fileext($url) != 'flv') {
      x* N. [; W7 C/ _5 p4 Q0 y& R
  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>';
    9 B: n% n3 }) ~# r
  9.         } else {5 Q7 \+ @3 I: p) u. 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>';
    2 b9 d6 x# C4 ?  e( x9 e% o
  11.         }
    % f' s' s% x* p
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {  l# t$ h+ O7 A/ H( z
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';
    0 G4 a4 P' I& C0 |  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-7-28 13:43 , Processed in 0.029062 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部