例子就没有了,思想就有。
上传以后,保存上传的文件名,然后AJAX过去,用PHP函数filesize检测这个文件的大小,然后返回~
至于不用new ActiveXObject问题呢,要写兼容性的代码兼容就行的了。。

解决方案 »

  1.   

    这是我写的一个程序!帮忙给看一下!参数传不过去!
    upload.html
    <html>
    <head>
    <title>Ajax学习</title>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    </head>
    <script language="javascript">
    /**
    * 初始化一个xmlhttp对象
    */
    function InitAjax()
    {
    var ajax=false;
    try
    {
    ajax=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e)
    {
    try
    {
    ajax=new ActiveXObject("Microsft.XMLHTTP");
    }
    catch(E)
    {
    ajax=false;
    }
    }
    if(!ajax&& typeof XMLHttpRequest !='undefined')
    {
    ajax=new XMLHttpRequest();
    }
    return ajax;
    }
    function validatesize()
    {
    //获取接受返回信息层
    var msg = document.getElementById("message");

    //获取表单对象和用户信息值
    var f = document.upload_img;
    var picfile = f.picfile;

    //接收表单的URL地址
    var url="validate.php"; //实例化Ajax
    var ajax = InitAjax();
    //通过Post方式打开连接
    ajax.open("POST", url, true); 
    //定义传输的文件HTTP头信息
    ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 

    //发送POST数据
    ajax.send(picfile);

    //获取执行状态
    ajax.onreadystatechange = function() 

    //如果执行状态成功,那么就把返回信息写到指定的层里
    if (ajax.readyState == 4 && ajax.status == 200) 

    msg.innerHTML = ajax.responseText; 
    }
    }
    }
    </script>
    <body>
    <!--上传表单,指定target属性为浮动框架iframe1-->
    <form action="upload.php" method="post" enctype="multipart/form-data" name="upload_img" target="iframe1">
    选择要上传的图片:<input type="file" name="image" id="picfile" name="picfile" onchange="validatesize()"><br/>
    <input type="submit" value="上传图片" >
    </form>
    <!--显示提示信息的层-->
    <div id="message" ></div>
    </body>
    </html>validate.php 
    <?php
    header("Content-type: text/html; charset=gb2312");
    $picfile=$_REQUEST["picfile"];
    var_dump($picfile);
    ?>根本打印不出来!为什么那!
      

  2.   

    你应该先在JS里面alert值出来,看是不是空的~
      

  3.   

    可以用Flex吧,如果上传后再判断,那还考虑鬼的文件大小。
      

  4.   

    <input type="hidden" name="MAX_FILE_SIZE" value="30000" >
    MAX_FILE_SIZE  隐藏字段(单位为字节)必须放在文件输入字段之前,其值为接收文件的最大尺寸。
    这是对浏览器的一个建议,PHP 也会检查此项。在浏览器端可以简单绕过此设置,因此不要指望用此特性来阻挡大文件。
    实际上,PHP 设置中的上传文件最大值是不会失效的。但是最好还是在表单中加上此项目,因为它可以避免用户在花时间等待上传大文件之后才发现文件过大上传失败的麻烦。
      

  5.   

    ajax不能直接上传文件的.
    要利用iframe来操作.详细请参看 ajaxupload
      

  6.   

    我alert(picfile);打印出来是个object!但是validate.php 接收不到!在Ajax里对象应该如何传递!
      

  7.   

    //获取表单对象和用户信息值 
    var f = document.upload_img; 
    var picfile = f.picfile; //接收表单的URL地址 
    var url="validate.php?picfile="+picfile; 
      

  8.   

    不行!如果这样var url="validate.php?picfile="+picfile;同样validate.php接收不到啊!
      

  9.   

    你怎么获取值?
    _POST['picfile']这样?
      

  10.   

    如果js不能判断文件大小,只能用ajax上传
    理论上,ajax是可以上传的
    用post方式,上传编码方式设为上传文件的
      

  11.   

    <html> 
    <head> 
    <title>Ajax学习 </title> 
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312"> 
    </head> 
    <script language="javascript"> 
    /** 
    * 初始化一个xmlhttp对象 
    */ 
    function InitAjax() 

    var ajax=false; 
    try 

    ajax=new ActiveXObject("Msxml2.XMLHTTP"); 

    catch(e) 

    try 

    ajax=new ActiveXObject("Microsft.XMLHTTP"); 

    catch(E) 

    ajax=false; 


    if(!ajax&& typeof XMLHttpRequest !='undefined') 

    ajax=new XMLHttpRequest(); 

    return ajax; 

    function validatesize() 

    //获取接受返回信息层 
    var msg = document.getElementById("message"); 

    //获取表单对象和用户信息值 
    var f = document.forms["upload_img"]; 
    var picfile = f.elements["picfile"].value; 

    //接收表单的URL地址 
    var url="jsTest.pro.php?picfile=" + escape(picfile); 

    //实例化Ajax 
    var ajax = InitAjax(); 
    //通过Post方式打开连接 
    ajax.open("GET", url, true); 
    //定义传输的文件HTTP头信息 
    //ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 

    //发送POST数据 
    ajax.send(null); 

    //获取执行状态 
    ajax.onreadystatechange = function() 

    //如果执行状态成功,那么就把返回信息写到指定的层里 
    if (ajax.readyState == 4 && ajax.status == 200) 

    msg.innerHTML = ajax.responseText; 



    </script> 
    <body> 
    <!--上传表单,指定target属性为浮动框架iframe1--> 
    <form action="upload.php" method="post" enctype="multipart/form-data" name="upload_img" target="iframe1"> 
    选择要上传的图片: <input type="file" name="image" id="picfile" name="picfile" onchange="validatesize()"> <br/> 
    <input type="submit" value="上传图片" > 
    </form> 
    <!--显示提示信息的层--> 
    <div id="message" > </div> 
    </body> 
    </html>
    <?php 
    header("Content-type: text/html; charset=gb2312"); 
    $picfile=$_REQUEST["picfile"]; 
    echo filesize($picfile)."<br>";
    var_dump($picfile); 
    ?> 
      

  12.   

    楼上的师哥!您写的好像能运行了!但是有个小错误!您在帮忙给看一下!Warning: filesize() [function.filesize]: stat failed for C:\Documents and Settings\kuno6\%u684C%u9762\%u4E0A%u4F20%u6D4B%u8BD5%u6587%u4EF6\Water lilies.jpg in C:\wamp\www\AjaxPHP\validate.php on line 4
      

  13.   

    我知道了!您用了一个javascript函数里escape()加密了,但是我PHP那边取还得解密!解密好像我又不会了!呵呵~~师哥在给发个函数怎么解密吧!
      

  14.   

    好像直接取值就行,不用解什么密
    原因可能是你所选的图片Water lilies.jpg,两个单词中间有空格,好像是filesize不能统计什么的,但这只是我的猜测,你可以在测试一下,其实这应该在判断之前就进行处理的
      

  15.   

    不行!我用了一个不带空格的图片同样出上面的问题!如果我去了escape()这个函数就能正常运行!但是我想了解一下。在PHP里如何解密那!