在一個網站項目中,為了得到更好的使用者體驗,很多地方都要處理成非同步無重新整理的效果。此檔案上傳範例是利用一個隱藏的架構iframe做橋樑,實現主體頁面上傳檔案無重新整理的效果。
其實本範例也不是真正的非同步效果,但是也是可以達到無重新整理效果的。而且這種方法是實現php無重新整理上傳檔案最快捷,最簡單的方法,所以何樂而不為呢。
html代碼
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>php實現無重新整理檔案上傳源碼-代瀟瑞部落格</title>
<script type="text/javascript" src="jquery-1.8.0.min.js"></script>
<script type="text/javascript">
function ajax_upload(fname){
if(fname){
$(".label1").html("上傳成功:("+fname+")");
var obj = document.getElementById('upfile');
obj.outerHTML=obj.outerHTML;
}else{
$(".label1").html("上傳失敗!!");
}
$("#upButton").val("上 傳").removeAttr("disabled");
}
function check_file(){
if($("#upfile").val()==""){
$(".label1").html("請先選擇一個檔案!");
return false;
}else{
$("#upButton").val("上傳中...").attr("disabled","disabled");
return true;
}
}
</script>
</head>
<body>
<p><input type="text" /></p>
<form action="deal_upload.php" method="post" target="upimgf" enctype="multipart/form-data" onsubmit="return check_file()">
<p>請選擇圖片:<input type="file" name="img" id="upfile" /></p>
<p><label class="label1" style="color:red;"></label></p>
<p><input type="submit" value="上 傳" id="upButton" /></p>
</form>
<iframe name="upimgf" style="display:none;"></iframe>
</body>
</html>
php代碼
<?php
header("Content-type:text/html;charset=utf-8");
$up_file = $_FILES['img'];
$file_name = $up_file['name'];
//print_r($file_name);
if(move_uploaded_file($up_file['tmp_name'],iconv("utf-8","gb2312",$file_name))){
echo "<script> parent.ajax_upload('".$file_name."'); </script>";
}else{
echo "<script> parent.ajax_upload(''); </script>";
}
?>
當然上在這段上傳沒有做任何的一個安全驗證了,我們如果要處理 可以進行一些處理 了。