$_FILES["userfile"]这里userfile一定要是前台的这个控件的名字 <input name="userfile" type="file" />
现在有个问题是。我用JS
获取file控件的值 userfile=document.getElementById("userfile").value;
然后通过ajax到后台处理
$.ajax({
 url:from.attr('action'),
 data:"HeadImg="+userfile+"",  
 type:"post",
 dataType:"text",
 success:function(data){
 document.write(data);
 //alert(data)
 if(data=="1"){
 window.location.href("home.php");
}
 }
});
然后后台
$POST['HeadImg']可以接受到 userfile的值但是
这样写move_uploaded_file($_FILES[$POST['HeadImg']][temp_name],dirname(__FILE__).$_FILES[$POST['HeadImg']]['name']);
出不了效果,文件上传不到时怎么回事。。$_FILES[$POST['HeadImg']][temp_name]这种写法不行吗?

解决方案 »

  1.   

    <form method="post" action="action/publicaction.php" enctype="multipart/form-data" >表单是这样写的
      

  2.   

    其实我不明白的那个move_uploaded_file(par1,par2)参数par1是什么意思是只要给个文件的地址就可以上传
    例如:move_uploaded_file("D:\a.jpg","D:\icon\a.jpg")
    还是说
    一定要用到$_FILES这个方法
    move_uploaded_file($_FILES['UpdataHeadimg']['tmp_name'],dirname(__FILE__)."\\..\\Icon\\".$_FILES["UpdataHeadimg"]["name"]);
      

  3.   

    这么说吧,客户端把通过HTTP POST将文件上传到服务器,保存在服务器的临时目录里(php.ini中设定的),文件地址即是$_FILES['UpdataHeadimg']['tmp_name'](文件名经过加密)
    move_uploaded_file()的作用仅限于把临时目录里的文件移动的新目录。而且由客户端上传文件到服务器也只能这么办,因为服务器端不能主动读取客户端的文件。