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