'checkExisting' : '/static/js/plugins/uploadify/check-exists.php',
会交给check-exists.PHP后台文件来处理判断文件存不存在,最初的源文件是这样的:
就这么几句话,按常理来说,有了路径文件名是可以file_exists()判断文件是否存在服务器,但忽略了一个问题,就是如果自定义了上传文件存放的路径,如上所看到的floder:
若是这样的话,文件判断那就肯定是不存在的了,因为路径都不对了,肯定找不到该文件……,此时看到,既然文件名能够$_POST[]过来,那希望这个folder也能POST过来,那就来打印看看到底$_POST里面放了些什么,结果有些失望:
array (size=1)
'filename' =>string 'OOOPIC_SHIJUNHONG_20090809ad6104071d324dda.jpg' (length=46)
就只有filename,什么都没了,接着还是不甘心,对JS不咋样的还是硬着头皮去看jquery.uploadify.min.js的源码,皇天不负有心人!找了好久终于找到了,相关代码如下:
原来这是已ajax提交过来的,其中的数据就只有filename,于是就想到把floder也传过去,修改:
data: {
filename: d.name,
floder: e.formData.folder
},
然后再在check-exists.php文件接收:
这样就大功告成了,可以判断文件是否存在了。
如下图:
这个问题不是代码问题,应该是电脑浏览器的设置问题,事实上,用户点击上传按钮的时候对话框已经d出来了,只是被浏览器覆盖住了,而且这个对话框是模式对话框,就是它的执行级别最高,在关闭它之前,当前页面的所有 *** 作都会认为是对对话框的 *** 作,当用户点击空白处的时候,系统会认为用户是在唤醒或点击已经d出但是被覆盖住的对话框,所以才会出现描述的情况;
当然这种情况,有时候也会莫名自愈!
onSelect当选中一个文件后触发此事件,默认会创建一个6位的随机编号的元素,并加入到文件队列中,如果返回false则不会执行此动作。
此事件有三个参数:
event: javascript的event对象
queueID: 选中文件的编号
fileObj: 一个包含文件详细信息的对象。
name – 文件名称
size – 文件的大小(字节)
creationDate – 文件的创建时间
modificationDate – 文件的修改时间
type – 文件的扩展名(包括'.')
所以说你想得到客户端的路径这样是不行的!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)