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>     <label>图片</label>     <br/>     <input type='text' name='textfield' id='textfield' class='txt' />     <span onclick="file.click()" >浏览...</span>     <input type="file" name="file" id="file" size="28" onchange="document.getElementById('textfield').value=this.value" />     <span onclick="UpladFile()">上传</span> </div>

</body>

</html>