首页  >  文章  >  后端开发  >  php关于file表单与ajax无刷新的有关问题

php关于file表单与ajax无刷新的有关问题

WBOY
WBOY原创
2016-06-13 11:58:41915浏览

php关于file表单与ajax无刷新的问题
upload1.php代码如下

<br /><script type="text/javascript"><br />function checkfile(name){<br />	var xhr;<br />	if(window.XMLHttpRequest){<br />		xhr = new XMLHttpRequest();<br />	}<br />	else xhr = new ActiveXObject("Microsoft.XMLHTTP");<br /><br />	xhr.onreadystatechange=function(){<br />		if(xhr.readyState == "4" && xhr.status == "200"){<br />			document.getElementById("err").innerHTML = xhr.responseText;<br />		}<br />	}<br /><br />	xhr.open("POST","result.php",true);<br />	xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");<br />	xhr.send("name=" + name);<br />}<br /></script><br /><form enctype="multipart/form-data" method="post" action="upload2.php"><br />	<input type="hidden" name="MAX_FILE_SIZE" value="10000" /><br />	上传文件:<input type="file" name="filename" onchange="checkfile(this.value)" /><br /><br />	<input type="submit" value="上传" /><br /><br />	<br />	<p id="err"></p><br /></form><br />


现将file中的onchange作为事件将我选择的文件名通过value传入checkfile()并请求result.php进行处理并回发,从而实现无刷新提示.

result.php代码如下
<br /><?php<br /><br />	$filepath = $_POST["name"];	<br />	$err = "";<br />	if(filesize($filepath) > 10000) $err = "文件不得超过10kb!";<br />	<br />	echo $err;<br /><br />?><br />


运行结果显示警告:



我把获取到的$_POST["name"]  echo 显示出来确实是“E:\\图册\\图片\\壁纸\\其他\\2.jpg”,感觉不是upload1.php那边传值的问题。
然后我新建一个文件测试filesize(“E:\\图册\\图片\\壁纸\\其他\\2.jpg”),echo出来页面显示是109739也没问题。
那么到底哪里出了问题?
------解决方案--------------------
filesize 只能返回本地文件的大小

------解决方案--------------------
先搞清楚,客户端与服务器端。
filesize只能获取到服务器上的文件大小。

一开始你post的name,路径是你客户端的图片,并未保存到服务器,因此,filesize不可以获取到。
而你写死了if(filesize("E:\\图册\\图片\\壁纸\\其他\\2.jpg")>10000) 相当于直接读取服务器文件,当然就可以了。

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn