php+ajax
上传文件:
a.php
if (!is_uploaded_file($_files[upfile][tmp_name]))
//如果我直间提交表单 $_files是有值的 (array ( [upfile] => array ( [name] => 1.jpg [type] => image/jpeg [tmp_name] => c:\windows\phpc106.tmp [error] => 0 [size] => 7108 ) ) )
//但我用ajax提交时, $_files是没有值,这个要怎么解决?
{
echo 图片不存在!;
exit;
}
------解决思路----------------------
你这样做是行不通的。异步上传文件我知道的有三种方法,第一种html5 file api方法,可以直接读取文件内容。第二种通过flash插件来上传,所有工作交由flash来完成,比如swfupload。第三种就是纯javascript完成异步上传。下面我们来介绍第三种方法。要借用iframe。参考代码:
可以同时上传多个文件,用guid进行区分
$(document).on('change','.file_upload_control .file_control',function(){
//第一步获取file值
var file = $(this).val();
//第二步上传前校验
if(!checkfile(file)){
clearfilecontrol($(this)); //清空文件的内容
return;
}
//第三步,如果上传的是图片,在本地进行上传前的预览
previewimg($file);
//第四步,提交上传
$(this).parent().submit(); //提交form
//第五步,如果上传的文件比较大(100m),查询进度,记得配置服务器支持大文件,否则上传不会成功!
var file_guid = $(this).siblings('.file_control_guid').val();
//第六步,查询文件上传进度,需要服务端程序进行配合,我这里举例的是php代码,需要使用php_apc.dll第三方插件协助 完成
settimeout('getuploadprogress('+file_guid+'),500);
});