在测试DisuczX时微酷发现一个问题,也可以说是DZX的一个Bug,就是不能成功上传部分swf格式的Flash文件,在批量上传界面显示上传完成但无法显示所上传的Flash文件,但有的却可以,在Discuz论坛苦苦搜索了N久,终于找到了一个不起眼的贴子帮我解决了问题。

DiscuzX无法上传部分Flash原因

上传flash cs4或flash cs3 制作的swf文件时,都不能成功上传,但上传flash mx制作的swf文件时,都能成功上传,微酷分析原因很可能是getimagesize()函数无法读取压缩过的Flash文件的大小,于是返回False值。

图:无法上传部分swf文件

这就解释了的为什么有的Flash可以上传,而有的却无法上传的问题了。

Discuz无法上传Flash的解决办法

① 打开论坛目录下 source\class\class_upload.php 文件
② 找到111行并注释掉:return false; 
图:解决方法

关于getimagesize()函数及用法

PHP函数getimagesize是庞大的PHP图形处理函数库中的一种,能够帮助我们取得所需要的图片或Flash的长度和宽度。

由于javaScript不能检测到Flash动画的宽度和长度,当用户上传flash动画的,就不能根据flash动画原来的大小来在网页上100%地显示。
其实这个工作可以在后台让PHP来完成的,因为PHP的getimagesize函数可以很好地支持swf的长宽检测。

要检测swf文件的大小,简单地使用下面的PHP代码就可以了:

<?php
list($width, $height, $type, $attr) = getimagesize("vcoo.swf");
echo "宽度=".$width."<br/>";
echo "高度=".$height."<br/>";
?>

 getimagesize()函数无法工作:

getimagesize()函数在Flash6下和压缩过的flash下无法正常工作,此问题到目前微酷没有找到解决办法。

微酷提示:修改代码请自重造成的安全问题本博客不负责任。

 

目前有2 条留言

  1. 2010年06月15日 11:54 iamlukas   |  引用  |  #1     

    dis X很帅气很华丽,很喜欢啊。有机会用用,哈哈

    ifu25 于 2010-6-15 13:14:09 回复

    PHPwind也很不错。

  2. 2010年10月12日 14:17 sasumi   |  引用  |  #2     

    不是无法检测,而是检测成为了swc(flash组件)格式了。
    因此程序里面加多一个 && $type != 13 这样才合理

发表评论

/ 快捷键:Ctrl+Enter
加载中……