【高州情】高州人深圳站

 找回密码
 立即加入
查看: 597|回复: 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身上,& D; r" o% E+ j4 L, C
用同样的方法外挂了一个HTML5的插件去替代原来的FLASH,恢复了头像的上传,) C& G: h( O2 ?' E" ]
虽然界面上还有些粗糙,但起嘛能用了,如果各位发现头像上传有什么问题可以跟帖留言。
* M+ T. ]7 p8 ?! s' {
6 X% {) C# Q4 O. R/ a, G8 |
' k" n- j6 n  u: A- I) b" O
) B8 Z: \* j2 g# J3 ?
  g/ ?9 Q+ D: j. Y
Discuz X2 HTML5 头像插件 v1.0  2026-05-052 |! o+ |6 C5 \* L4 P
==============================
) r3 q4 ~# v  y0 k2 v7 T0 _! G【目录结构】
( ^7 b( u( s8 \0 q- j. pupload/8 u& S! _% `6 @6 s/ }7 J. P
├── html5avatar.php        插件后端接口(核心逻辑)
5 q8 K1 Z4 r3 t& ?8 z└── template/) N4 R* S! J# j! x3 G/ n
        └─ default/
3 z" Q* r+ u! j. N            └─ home/7 _4 t# r( o! w, W
                └─ spacecp_avatar.htm        前端模板(含 Cropper.js)* _0 v1 ^6 z/ d/ y* }) j
, o$ d: ?8 F. m- W
【适用环境】
. A7 g3 C+ ?& @& e5 R: S4 b' u2 l2 |- Discuz! X2 UTF-8& n8 ?1 c: t. N, O% a5 r  G
- UCenter 1.6; v. T5 W+ N1 D6 e: o8 y7 D
- PHP 5.6+
" `; J+ s% y$ L3 ~) O7 z8 `9 Y5 B6 Y% O4 {! o' i, J
【安装方法】$ d- S7 Z( G- a' T+ y- V& s
1. 将 upload 目录下的文件,按路径覆盖到你网站根目录9 {) Z* `. {4 t6 T. |3 h
' X5 s1 |( F" v+ @
2. 特别注意:# P1 \. e% h7 m. {4 `
   本修改仅限使用默认模板,路径为:/templates/default/home/spacecp_avatar.htm
/ U( A+ l  e; k' o. C9 ?3 G   (如果你使用了其它模板,请自行替换文件标注部分代码。)
; M5 M+ X8 W4 T, h# n
' w) W; I* \, i6 g6 Q5 ^3. 确保目录权限:
6 }* f; r2 x% m* ]+ K! p   chmod -R 755 uc_server/data/avatar  q' y( j5 l/ T4 S4 I3 g
6 |* U# Q4 a+ D' u) u
4. 进入:" W. a+ W! u% Y$ E
   点头像进入 →个人空间 → 编辑头像
% [9 {& Z1 J  W! F   即可使用 HTML5 上传% O5 m$ `2 a+ U6 T

3 y$ Q+ [- d$ X4 f5 P2 `【说明】2 R% X8 ^3 M, X+ i
- 会直接替换 Flash 头像入口  t1 Y8 x" F# K" j% Z
- 无需安装、无需后台开启6 B3 o6 c- O/ g, `
- 不影响 UCenter 原有逻辑7 D9 J" ]: z) s1 y1 V$ @4 F
- 保留头像简单裁剪功能(Cropper.js)
, G4 T! V$ J" t$ ?0 u2 n, C- E+ v4 Z5 h( d- 仅新增一个htnl5上传组件
8 k( A, W+ S8 H* p

, T7 S* Z7 y1 A
附件: 你需要登录才可以下载或查看附件。没有帐号?立即加入

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) {9 {2 r! b8 t! D0 U
  2.         $w = !$w ? 550 : $w;, _9 L! _" X1 h
  3.         $h = !$h ? 400 : $h;& Y1 z9 N8 j* {& `
  4.         preg_match("/((https?){1}:\/\/|www\.)[^\[\"']+/i", $url, $matches);
    ( K5 L: r  G( f  x
  5.         $url = $matches[0];. [' A" ?" c! Q" ?8 D/ |, M
  6.         $randomid = 'swf_'.random(3);
      d; Y4 y/ Q4 m9 m: \' L
  7.         if(fileext($url) != 'flv') {
    & _2 U6 w- @! L. T% U
  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>';
    ( z& |5 O5 _. @/ |3 e  w# C
  9.         } else {" {  ?+ `2 }* ~0 L" Y+ K; O
  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>';
    0 s1 F2 N3 s8 a4 J# _' g7 e
  11.         }
    2 ]& l: |+ A3 A' Y- a" V- E
  12. }
复制代码
不得已的修改方案(让原来的播放器直接显示为FLASH链接):
  1. function parseflash($w, $h, $url) {
      }+ _0 U0 F0 u! Z6 t# h6 t
  2. return '<a href="'.$url.'" target="_blank" rel="noopener noreferrer">'.$url.'</a>';
    5 K" h: C0 Y0 V7 {7 `8 ?
  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) {
    # x" U! @: ?' Y) \6 r3 j) K
  2.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));3 Y- ]! D* y' B) P3 R& \, ~3 @7 ^. c
  3.         switch($ext) {3 q+ K( y1 e( d3 e2 y4 T
  4.                 case 'mp3':
    - e7 I  U1 @/ N) B
  5.                 case 'wma':. K; _% D8 t, C! |8 E
  6.                 case 'mid':
    . n; I9 d, f% B% W2 p
  7.                 case 'wav':
    9 |+ I) U# }/ @. c! J8 }6 b  X
  8.                         return '<object classid="clsid:6BF52A52-394A-11d3-B153-00C04F79FAA6" ...>';
    1 @# t8 i2 u" t  L& q: z, d
  9.                 case 'ra':  I0 z) i! C! z
  10.                 case 'rm':
    6 L+ \$ Y8 L. `( p& l
  11.                 case 'ram':  u( b5 _, T. Z2 A. b
  12.                         return '<object classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA" ...>';
    6 ]% X" t9 T# {9 ]$ F- R
  13.         }- |' ]+ ?! G) n4 J
  14. }. X6 r/ V; ~1 \: B% G% A- a
  15. $ v4 T7 r% I; U7 |
  16. function parsemedia($params, $url) {
    : O: g' ~2 O- _$ E+ A
  17.         ...2 B" \! [# M( {0 m0 R" h* \
  18.         return parseaudio($url, $width);
    0 I9 {. i# Q7 x  g8 |' u0 J. m* Y9 U
  19. }
复制代码
新的 HTML5 播放控件:
  1. // 替换原代码为 HTML5 播放控件6 w% _8 C  W# p9 g7 X  k! ~
  2. function parseaudio($url, $width = 400) {
    ; A  F( _; u1 l; O" W/ l
  3.         $url = str_replace('\\"', '"', $url);
    & A% k7 T, C4 Z% y1 ]5 _
  4.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));
    ; e: o& ?: g8 P  E! ^  x3 R4 Z

  5. ' ~4 ~' B* p8 C4 F
  6.         switch($ext) {
    & o7 R. ?7 u6 B4 Q
  7.                 case 'mp3':
    1 S% M0 U" U! O- k5 m6 X& z8 G
  8.                 case 'wma':
    7 n/ _2 _8 d! @) d& ?
  9.                 case 'wav':4 g6 ?, _  O9 ~# N
  10.                 case 'mid':$ u6 k$ N" n; `5 U: \8 b2 k
  11.                 case 'ogg':0 _6 F& B; o4 J, ^0 Z- O2 A
  12.                         return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:2px;" src="'.$url.'"> </audio>';7 q% ]8 S3 ~' o, m& k7 S1 v
  13.                 case 'ra':5 U8 [$ I% Z3 _9 |
  14.                 case 'rm':
    # u/ m5 a( ?* Y* _2 e! v4 Y
  15.                 case 'ram':6 y6 g9 i* x6 ~4 ]
  16.                         // RM 无法 HTML5 播放,退化为链接
    7 \) L# l  m/ f: F* O
  17.                         return '<a href="'.$url.'" target="_blank">'.$url.'</a>';; h1 k7 f1 a7 \
  18.         }9 @9 U& f/ G+ S% w) ~% G
  19. }0 R* w( o" o9 ]

  20. ; X9 `' I1 P: y: L
  21. function parsemedia($params, $url) {" H  s! ?, m2 x6 u5 u
  22. $ L: y( m) h( ?" i) ]9 p. v  w
  23.         $params = explode(',', $params);) y- Q4 I! [6 L8 Y8 r5 l

  24. : X8 h# |2 d8 g5 f* C2 S9 B$ |
  25.         $width  = isset($params[1]) && intval($params[1]) ? intval($params[1]) : 400;
    ' I  u! H: n) m" M
  26.         $height = isset($params[2]) && intval($params[2]) ? intval($params[2]) : 300;1 X% ?" Y) l3 m3 ~4 a+ C# S; w

  27. . ^  n4 X6 Y" b* g7 [
  28.         $width  = min($width, 800);) z& x* e0 J1 h7 g2 Q" i% [# b5 g5 s
  29.         $height = min($height, 600);. b7 ^' Q- M+ J2 I

  30. : A7 x  p5 z! u/ q
  31.         $url = str_replace(array('<', '>'), '', str_replace('\\"', '"', $url));0 @2 z. Y' ]0 j% F8 n2 p
  32.         $ext = strtolower(substr(strrchr($url, '.'), 1, 5));$ Q$ {% \! w; M9 z9 U% y$ ^) z
  33. 5 h# t5 f5 S. d
  34.         /* HTML5 优先(现代浏览器) */' q" e9 D6 w% ~$ ~4 o' t
  35.         if(in_array($ext, array('mp3','wav','ogg'))) {* n0 _. K$ m! T$ D3 x0 U. k
  36.                 return '<audio controls style="width:100%;max-width:'.$width.'px;border-radius:6px;">2 O2 d' ^. M0 h+ B$ w3 L( F1 y5 e+ w
  37.                                         <source src="'.$url.'" type="audio/mpeg">
    ( X. x, C+ z! E% I1 k  X' f
  38.                                 </audio>';
    . i7 w. S, v" z, b
  39.         }
    ' O9 [8 J! f; T; }7 o9 d  i  `$ ?2 F

  40. 3 f, `8 \5 `2 x; g
  41.         if(in_array($ext, array('mp4','webm','ogg'))) {8 ]& B7 W) Q+ n; H2 ?
  42.                 return '<video controls style="width:100%;max-width:'.$width.'px;border-radius:6px;"
    # V2 a  t$ b* x3 W. K
  43.                                          poster="">
    , U* T, K+ i. M6 Q4 T; N3 ^9 q
  44.                                         <source src="'.$url.'" type="video/mp4">6 _4 z) h" a+ o, E) f3 C
  45.                                 </video>';
    ' w* _6 s) I6 D! f- N1 S$ f5 a
  46.         }
    & C3 v! A3 a& ?) f- `! x

  47. : S. g1 e' D& w4 V+ E
  48.         /* Flash 逻辑保留(但不指望能用) */: L* R* Y3 T, l5 a
  49.         if(in_array(count($params), array(3, 4))) {% U5 A" E' T' s. N9 j# J
  50.                 $type = $params[0];4 P8 l( W+ n/ j1 _+ y8 b

  51. . G. z( N% |! e2 o( A! t/ Q
  52.                 switch($type) {
    # d9 d+ u' D2 V( _8 T
  53.                         case 'mp3':) u4 T" G% p3 R3 ]3 U. |
  54.                         case 'wma':( O( i& H3 _/ a- i0 N; d3 h9 t* m
  55.                         case 'ra':
    3 r6 D, X+ l) w! Y
  56.                         case 'ram':
    3 b7 h2 A* K8 a2 @0 w3 p2 f7 W
  57.                         case 'wav':% w. l- {, T! ^4 t
  58.                         case 'mid':
    8 L6 h# O" L2 U" X4 c6 ]% H
  59.                                 return parseaudio($url, $width);0 E1 \5 f. ~: M. \

  60. - f7 F- h) n$ {% W6 P" p9 A8 A
  61.                         case 'rm':2 p' N6 r9 B; F1 E
  62.                         case 'rmvb':
    . `2 s7 T* Q3 z  Z2 k
  63.                         case 'rtsp':
    % n$ ^% U; n2 X" d3 l6 |
  64.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    - D! k( \& {3 w: d

  65. " J1 f7 v" r3 L9 h
  66.                         case 'flv':
    9 |8 M% y1 G( i: q. H
  67.                         case 'swf':
    * R$ W, ]1 |2 S. y+ ], w5 X1 n
  68.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    0 ?; r) t/ w% Y0 h& C: @
  69. 8 F. J6 d$ Y  b! |' X3 l! i
  70.                         case 'asf':
    2 j1 B: R/ D* {# h4 E! b0 U
  71.                         case 'asx':& p7 \! v! s8 x0 {* w7 H' B" _. X4 E
  72.                         case 'wmv':
    $ n/ @# s/ S+ r4 @' b2 |: Y
  73.                         case 'mms':
    % D% v8 Z2 x, O! L
  74.                         case 'avi':! X! W6 S* s4 _; |# U6 l/ r, o
  75.                         case 'mpg':
    6 R& a+ Z' q; X  N$ z6 T% [: j
  76.                         case 'mpeg':5 L2 F; {, ^6 k7 @& I
  77.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';2 g- m. Z/ Z% X: S# a- ]
  78. + g- e$ M3 P4 N
  79.                         case 'mov':  j7 F- J  Z. ]
  80.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';
    * V) y1 q( \# _9 \
  81. 0 k! ~) I# L# h4 g4 U) O
  82.                         default:, H/ v1 O0 ]5 X! V  m
  83.                                 return '<a href="'.$url.'" target="_blank">'.$url.'</a>';  w2 A" o3 |+ t1 X1 f
  84.                 }& a9 z( N: ?6 \# E
  85.         }4 [( Y- u$ E/ `2 U6 ~3 b* A
  86.         return;
    " F& a% l/ _7 t; [% g
  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-23 14:25 , Processed in 0.033953 second(s), 13 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部