php+js实现异步图片上传实例分享

  upload.php

  

复制代码 代码如下:

  <?php

  if(isset($_FILES["myfile"]))

  {

  $ret = array();

  $uploadDir = 'images'.DIRECTORY_SEPARATOR.date("Ymd").DIRECTORY_SEPARATOR;

  $dir = dirname(__FILE__).DIRECTORY_SEPARATOR.$uploadDir;

  file_exists($dir) || (mkdir($dir,0777,true) && chmod($dir,0777));

  if(!is_array($_FILES["myfile"]["name"])) //single file

  {

  $fileName = time().uniqid().'.'.pathinfo($_FILES["myfile"]["name"])['extension'];

  move_uploaded_file($_FILES["myfile"]["tmp_name"],$dir.$fileName);

  $ret['file'] = DIRECTORY_SEPARATOR.$uploadDir.$fileName;

  }

  echo json_encode($ret);

  }

  ?>

  index.html

  

复制代码 代码如下:

  <!DOCTYPE html>

  <html>

  <head>

  <title>Html5 Ajax 上传文件</title>

  <meta charset="utf-8">

  <script type="text/javascript">

  var xhr;

  function createXMLHttpRequest()

  {

  if(window.ActiveXObject)

  {

  xhr = new ActiveXObject("Microsoft.XMLHTTP");

  }

  else if(window.XMLHttpRequest)

  {

  xhr = new XMLHttpRequest();

  }

  }

  function UpladFile()

  {

  var fileObj = document.getElementById("file").files[0];

  var FileController = 'upload.php';

  var form = new FormData();

  form.append("myfile", fileObj);

  createXMLHttpRequest();

  xhr.onreadystatechange = handleStateChange;

  xhr.open("post", FileController, true);

  xhr.send(form);

  }

  function handleStateChange()

  {

  if(xhr.readyState == 4)

  {

  if (xhr.status == 200 || xhr.status == 0)

  {

  var result = xhr.responseText;

  var json = eval("(" + result + ")");

  alert('图片链接:\n'+json.file);

  }

  }

  }

  </script>

  <style>

  .txt{ height:28px; border:1px solid #cdcdcd; width:670px;}

  .mybtn{ background-color:#FFF; line-height:14px;vertical-align:middle;border:1px solid #CDCDCD;height:30px; width:70px;}

  .file{ position:absolute; top:0; right:80px; height:24px; filter:alpha(opacity:0);opacity: 0;width:260px }

  </style>

  </head>

  <body>

  <div class="form-group">

  <label class="control-label">图片</label>

  <br/>

  <input type='text' name='textfield' id='textfield' class='txt' />

  <span onclick="file.click()"  class="mybtn">浏览...</span>

  <input type="file" name="file" class="file" id="file" size="28" onchange="document.getElementById('textfield').value=this.value" />

  <span onclick="UpladFile()" class="mybtn">上传</span>

  </div>

  </body>

  </html>