PHP+jquery+ajaxupload 无刷新上传文件或图片

我参照了网上其它的方法,其它人写的都存在一些问题。我进行了些修正。

上传文件更改文件名,防止文件重名。

第一步:包含这个;jquery  库文件 和;ajaxupload库文件。

自己上网下吧,有很多。

第二步:php上传类file_upload.php

<?php
/*
program:赵金鹏
time:2012-04-11
todo:代码还有很多可以加的方法,由于时间关系没有加,以后有需要再更新。
*/
  class file_upload
  {
      var $g_filename; // File对象名称
      var $g_Directroy;  //上传至目录
      var $g_MaxSize;    //最大上传大小 
      var $g_doUpFile;   //上传的文件名
      var $g_sm_File;   //缩略图名称
      var $g_Error;     //错误参数
      //构造函数
      public function file_upload($file_name,$dir_upload='')
      {
           $this->g_filename=$file_name;
           $this->g_MaxSize=2097152; // (1024*2)*1024=2097152 就是 2M
           $this->g_Error=0;
           if($dir_upload=="")
                $this->g_Directroy="upload";
           else
                $this->g_Directroy=$dir_upload;
      }
      //上传
      function upload()
      {

          if($this->Is_uploadDir() && $this->Is_FileMax())
          {
              $this->get_newname();
              $file_path=$this->g_Directroy.'/'.$this->g_doUpFile;
              if(!move_uploaded_file( $_FILES[$this->g_filename]['tmp_name'], $file_path))
                {
                    $this->g_Error=5;
                    return $this->get_error();
                }
              else
              {
                  $this->g_Error=0;
                  return $this->get_error();
              }
          }
          else
                return  $this->get_error();
      }
      //生成新名称
      function get_newname()
      {
            $tempName = $_FILES[$this->g_filename]['name'];
            $extStr = explode('.', $tempName);
            $count = count($extStr)-1;
            $ext = $extStr[$count];
            $this->g_doUpFile=date('YmdHis').rand(0, 9).'.'.$ext;
      }
      //验证上传目录是否存在
      function Is_uploadDir()
      {
           if(!is_dir($this->g_Directroy))
            {
                if(!mkdir($this->g_Directroy))
                    {
                        $this->g_Error=1;
                        return false;
                    }
                if(!chmod($this->g_Directroy,0755))
                    {
                        $this->g_Error=2;
                        return false;
                    }
            }
            return true;
      }
      //验证上传文件是否超出限制
      function Is_FileMax()
      {
          if($_FILES[$this->g_filename]['size']>$this->g_MaxSize)
            {
               $this->g_Error=3;
               return false;
           }
           return true;
      }
      //返回服务器文件名
      function get_filename()
      {
          return  $this->$g_doUpFile;
      }
      //自定义错误代码
      function get_error()
      {
          switch($this->g_Error)
          {
              case 0:
                $tip="success:".$this->g_doUpFile;break;
              case 1:
                $tip="文件上传目录不存在并且无法创建文件上传目录";break; 
              case 2:
                $tip="文件上传目录的权限无法设定为可读可写";break;
              case 3:
                $tip="上传的文件大小超过了规定大小";break;
              case 4:
                $tip="请选择上传的文件";break;
              case 5:
                $tip="复制文件失败,请重新上传";break;
             
          }
          return  $tip; 
      }
  }
?>
第三步 类调用方法页 upload.php

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<?php
include "file_upload.php";
$fu=new file_upload("userfile");
echo $fu->upload();

?>  

第四步 页面实现 add.php

图片上传以后,直接显示预览图片。

<html>
    <head>
    <title>景点管理</title>
      <meta http-equiv="content-type" content="text/html; charset=utf-8"> 
      <link rel="stylesheet" href="../../css/share.css" type="text/css">
      <script type="text/javascript" src="../../js/jquery-1.6.2.js"></script>
      <script type="text/javascript" src="../../js/ajaxupload.3.6.js"></script>
      <script type="text/javascript">
      $(document).ready(function(){
    var button = $('#upload_button'), interval;
    var fileType = "pic",fileNum = "one";
    new AjaxUpload(button,{
        action: 'upload.php',
        name: 'userfile',
        onSubmit : function(file, ext){
            if(fileType == "pic")
            {
                if (ext && /^(jpg|png|jpeg|gif)$/.test(ext)){
                    this.setData({
                        'info': '文件类型为图片'
                    });
                } else {
                    button.text('非图片类型文件,重新上传');
                    return false;              
                }
            }
            $("#pic_path").val(file);