我使用的是当前的最新版的3.2版,下载下来之后运行,根据提示很快出现前台效果,但问题出来了,前台显示已经上传成功,但后台总是没有文件,也就是并没有真正意义上的上传成功,感觉肯定是负责上传的后台文件uploadify.php出错了,但ZEND这时候也不给力,调试不进去后台PHP了,真想骂人。
后来在网上看到一个老兄的JS调试方法,结合自己的后台处理经验,对uploadify.php进行了重写,这才完全实现了,所要的功能。
下面就把解决方法记录一下,以便有相同问题的朋友解决:
一,首先,我们说下如何调试
打开jquery.uploadify.js,找到如下代码:
如图所示,添加”alert(data)”;
二、重新运行程序,你会发现,这里有个什么鸟timestamp的东东,在post的时候根本就没有POST过来,也就是说根本就没有这个变量,下面我对它进行了更改,代码如下,我就不讲了,没几行,也有提示,大家可以研究一下
<?php
header('Content-Type: text/html; charset=UTF-8');
ini_set('date.timezone','Asia/Shanghai');//时区
//指定目标文件夹
$targetFolder = 'upload/uploadFile/'.'day_'.date('ymd').'/';
if (!empty($_FILES)) {
$tempFile = $_FILES['Filedata']['tmp_name'];
if (!file_exists($targetFolder)){//如果指定文件夹不存在,则创建文件夹
mkdir($targetFolder , 0777);
}
$fileParts = pathinfo($_FILES['Filedata']['name']);
//根据日期加随机数生成新名字
///$targetFile =$targetFolder.$_FILES['Filedata']['name'];//这句是保存原来的文件名
$newFilename=$targetFolder.date("YmdHis").mt_rand(1000,9999).'.'.$fileParts['extension'];
//转移所上传的文件
if(move_uploaded_file($_FILES['Filedata']['tmp_name'],$newFilename))
{
//echo $newFilename;
echo '1';
}
//如果移动失败
else{
echo 'Invalid file type.';
}
//$_FILES['upfile']['name']与$_FILES['Filedata']['name']是同一个意思
//同样$_FILES['upfile']['tmp_name']与$_FILES['Filedata']['tmp_name']也是同一个意思
}
?>
注:对于上面代码,可能有些朋友会问,不是在JS中可以指定folder:参数来指定存放的目标文件夹么,为什么这里你还要定义$targetFolder这个变量来指定目标文件夹呢,我原来也很天真的认为指定folder参数是有用的,后来发现根本没啥用,原来的程序,没有指定目标文件夹,而是用
$targetPath= $_SERVER['DOCUMENT_ROOT'] . $targetFolder;
这句来指定目标文件夹的,而$targetFolder的值并不是POST传送过来的,而是通过$targetFolder = '/uploads';这句直接赋的值,所以在JS里指定folder参数根本没啥用。后来我仔细研究了下jquery.uploadify.js的代码,贴个图给大家

上面这是这版的uploadify的所有的参数,上面根本没有folder参数!!!!!而uploadify的网站上面是有folder参数的,只能说明一个问题:开发者在这版开发的时候忘加这个参数了!!!,所以我们也只有指定目标地址了。
我给大家写个DEMO,当然包括上面的后台处理文件,大家可以下载,研究一下!谢谢