ajax.onreadystatechange = function()
{
//如果执行状态成功,那么就把返回信息写到指定的层里
if (ajax.readyState == 4 && ajax.status == 200)
{
document.getElementById("msg").innerHTML = ajax.responseText;
}
}
{
//如果执行状态成功,那么就把返回信息写到指定的层里
if (ajax.readyState == 4 && ajax.status == 200)
{
document.getElementById("msg").innerHTML = ajax.responseText;
}
}
文件只能以表单形式提交。
{
//如果执行状态成功,那么就把返回信息写到指定的层里
if (ajax.readyState == 4 && ajax.status == 200)
{
msg.innerHTML = ajax.responseText;
//这里指定焦点
document.getElementById('你要给焦点的html的元素的id').focus();
}
}
这个只是ajax的最基本应用,能得到值,但不一定能得到文件的大小
$picfile=$_REQUEST["picfile"];
echo filesize($picfile)." <br>"; 这样写!确实能得到大小!
你直接传个客户端的文件名过去就能知道这个文件的大小了?
$picfile=$_FILES['picfile'];
echo picfile['size'];就不行了!
Warning: filesize() [function.filesize]: stat failed for C:\Documents and Settings\kuno6\%u684C%u9762\%u4E0A%u4F20%u6D4B%u8BD5%u6587%u4EF6\Sunset.jpg in C:\wamp\www\AjaxPHP\validate.php on line 4
ajax是不能直接上传文件的,但是你没有重视,呵呵!
既然ajax不能直接上传文件,所以$_FILES数组是空的,filesize()也不能直接读取客户端的文件.
所以在一开始你的思路就是错的.直到现在你还没有意识到.2 如果想让ajax能够上传文件,就需要模拟表单提交,常见的处理方式就是利用动态iframe来代替传统的表单提交.
jquery ajaxfileupload就是利用这种方式实现的,你可以直接用ajaxfileupload.当然你也可以将它哪块处理方法给提出来,自己模仿实现.言尽于此,能理解多少就看楼主了!
<input onclick="startProgress(); return true;" type="submit" value="上传"/>
就可以直接调用ajax了。(startProgress(); 就是调用的函数)
建议写个demo程序来,大家学习一下.
想问一下,你按钮提交是在ajax之前还是在ajax之后.
如果在之前,ajax还是不能获取上传的文件,因为表单并没有真正的提交.
如果在之后,页面都提交了,还调用ajax有何用?或者有别的方法,真的想学习一下!
preg_match_all("/[-ÿ].|[-]+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(ord($v[0]) < 128)
$ar[$k] = rawurlencode($v);
else
$ar[$k] = "%u".bin2hex(iconv("GB2312","UCS-2",$v));
}
return join("",$ar);
}function unescape($str) {
$str = rawurldecode($str);
preg_match_all("/(?:%u.{4})|.+/",$str,$r);
$ar = $r[0];
foreach($ar as $k=>$v) {
if(substr($v,0,2) == "%u" && strlen($v) == 6)
$ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4)));
}
return join("",$ar);
}
php制作实时上传进度就是使用这方法,有兴趣了解的话看
http://www.ibm.com/developerworks/cn/opensource/os-php-v525/
PHP V5.2 中的新增功能,第 5 部分: 跟踪文件上传进度
jakey9826
说的对
如果上传文件可以模拟提交表单来上传文件
wangtiantian23
开始的时候看到可以实现是因为你本地下和客户端同一目录下有同名文件,所以可以找到文件。
如果不存在就会出找不到文件的错误。