PHP Ajax,FormData收集表单数据(包括文件) 页面无刷新上传文件(提交表单)

一、FormData收集表单数据(包括文件)
dom可以获取普通表单域信息,并可以直接提交给服务器
javascript实现附件信息抓取,之前浏览器技术由于有安全方面的限制,也不允许通过js抓取附件信息。
FormData可以实现普通表单域 和 上传文件域 信息的收集。
收集附件信息:
dom方式只可以收集普通的表单域信息,并且浏览器由于安全方面的限制也禁止通过javascript语言操作本地文件。
可以利用FormData实现附件信息的收集:普通表单域 和 上传文件域 均可以收集。

二、附件上传相关技术点:



服务器端:$_FILES接收附件信息(name/error/size/type/tmp_name)
error:
0---->ok
1---->大小超出php.ini限制
2---->大小超出MAX_FILE_SIZE表单域限制
3---->附件只上传了一部分
4---->没有上传附件
move_uploaded_file(附件临时路径名tmp_name,真实附件路径名);

三、使用FormData注意:
1、每个表单域必须有name属性
2、在form标签里边无需设置enctype=”multipart/form-data”属性(即使有上传文件域也不需要设置)
3、ajax通过post方式传递FormData的数据不需要设置setRequestHeader("content-type","application-x-www-form-urlencoded")方法
4、普通表单域的特殊符号无需编码


06-reg.html(前端FormData收集表单数据(包括文件)Ajax提交表单,上传文件):



    
        新建网页
        
        
        

        
    
    
        

无刷新方式实现附件上传

用户名:

密码:

邮箱:

头像:

06.php(后端接收保存文件):
0){
    exit('附件有错误');
}

//附件上传逻辑
//A. 附件存储目录 和 名字
$dir = "./upload/";
//附件后缀
$ext = substr($_FILES['touxiang']['name'],strrpos($_FILES['touxiang']['name'],"."));
$name = date("YmdHis").'-'.mt_rand(1000,9999).$ext;
$dir_name = $dir.$name;

//B. move_uploaded_file() 把附件从"临时路径名"移动到"真实路径名"
if(move_uploaded_file($_FILES['touxiang']['tmp_name'],$dir_name)){
    echo "success";
}else{
    echo "fail";
}


你可能感兴趣的:(PHP,Ajax,JavaScript)