大家應該可以舉出幾種常用的非同步檔案上傳功能的實現方式,使用頻率較多的有原生ajax和iframe架構,實現圖片檔案上傳,下面就為大家分享圖片檔案上傳的兩種方式:原生ajax和iframe架構,供大家參考,具體內容如下
方法一:利用iframe架構上傳圖片
html代碼如下:
<div class="frm"><form name="uploadFrom" id="uploadFrom" action="upload.php" method="post" target="tarframe" enctype="multipart/form-data"><input type="file" id="upload_file" name="upfile"></form><iframe src="" width="0" height="0" style="display:none;" name="tarframe"></iframe></div><div id="msg"></div>
index.js檔案:
$(function(){$("#upload_file").change(function(){$("#uploadFrom").submit();});});function stopSend(str){var im="<img src='upload/images/"+str+"'>";$("#msg").append(im);}
upload.php檔案:
<php$file=$_FILES['upfile'];$name=rand(0,500000).dechex(rand(0,10000)).".jpg";move_uploaded_file($file['tmp_name'],"upload/images/".$name);//調用iframe父視窗的js 函數echo "<script>parent.stopSend('$name')</script>";?>
方法二:原生態ajax檔案上傳
<!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>
php代碼:
<?phpif(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);}?>
以上就是本文的全部內容,希望對大家學習理解ajax和iframe架構實現圖片檔案上傳有所協助。