ajaxDreamer 2011-08-02
在用PHP上传文件时我们只能用$_FILES数组,如果我们只是单一的用JS方式取其ID,如<input id='img' type='file'>..document.getElementById('img').value或者jquery形式的$("#img")都是不能正真实际上传的。
可是功能上又要要求实现所谓的“异步上传”,怎么办呢?只能借助于第三方的组件,或者自己写一个。但如果是考虑开发时间,那以用第三方的,这里有一个不错的jQuery的Ajax文件上传的组件,是“ajaxfileupload.js",其组件下载地址在网上可以找到,下载完毕里面有一个php的应用demo,很容易看懂的。
过程:
首先引入JQUERY的主文件:
ajaxfileuploads.js下载地址
<scripttype="text/javascript"src="jquery.js"></script>
<scripttype="text/javascript"src="ajaxfileupload.js"></script>
再写一个传值文件
<scripttype="text/javascript">
functionajaxFileUpload(){
$.ajaxFileUpload
(
{
[url='/cms/manage/newsajax/newsadd']url:'/cms/manage/newsajax/newsadd'[/url],
secureuri:false,
fileElementId:'img',
dataType:'text',
success:function(data){
alert(data);
}
}
)
returnfalse;
}
</script>
这样客户端就完成了。
再服务器端时,为了简便检测是否真正的传值过来了,你可以打印$_FILES.
var_dump($_FILES);
这样你又看到你熟悉的数组了:
$array=array(
'name'=>'lamp.jpg',
'type'=>'image/pjpeg',
'tmp_name'=>'c:\windows\temp\phpFA.tmp',
'error'=>0,
'size'=>3127)