欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP+iFrame實現(xiàn)頁面無需刷新的異步文件上傳

 更新時間:2014年09月16日 10:21:51   投稿:shichen2014  
這篇文章主要介紹了PHP+iFrame實現(xiàn)頁面無需刷新的異步文件上傳,包含了iframe框架與form表單的運用及PHP文件上傳等技巧,需要的朋友可以參考下

本文實例講述了PHP+iFrame實現(xiàn)頁面無需刷新的異步文件上傳,是非常實用的常見技巧。分享給大家供大家參考。具體分析如下:

說到iframe,現(xiàn)在用它的人是越來越少了,并且很多人都相信它應該被AJAX所取代,的確如此,因為AJAX太出色了。

不過有一種情況的實現(xiàn)我還是選擇了iframe,這就是本文要說的文件的異步上傳,感興趣的可以試試,如果用原生的AJAX來實現(xiàn)應該是要復雜的多。

先來給初學者補補基礎知識:

1. 在iframe標簽一般會指定其name特性以于標識;
2. 在form表單中通過action(目標地址)和target(目標窗口,默認為_self)來確定提交的目的地;
3. 將form中的target指向iframe的name,則可將表單提交到了隱藏框架iframe中;
4. iframe里的內容實際上也是一個頁面,其中的js里的parent對象指代父頁面,即嵌入iframe的頁面;
5. PHP中用move_uploaded_file()函數(shù)來實現(xiàn)文件上傳,$_FILES數(shù)組存儲有上傳文件的相關信息。

本文實現(xiàn)的是一個用戶選擇了頭像文件后立刻上傳并顯示在頁面上的例子,廢話不多說,思路是這樣的:

1. 在表單中嵌入一個iframe,設定好name特性值;
2. 在選擇文件上傳的控件的值改變時觸發(fā)一個js函數(shù),該函數(shù)將表單提交至iframe,而iframe內嵌的頁面用來處理文件上傳;
3. 在iframe中完成了文件上傳之后,在js中通過parent來操作父頁面,在特定的標簽內顯示圖片,并將圖片的保存地址賦給一個隱藏域;
4. 回到原來的頁面,現(xiàn)在既完成了文件的上傳,也在隱藏域內記錄了文件的路徑,整個過程沒有刷新頁面;
5. 最后用戶只需提交原來的頁面時重置表單的action和target屬性的值即可。

下面是效果截圖和實現(xiàn)的代碼:

upload.php頁面如下:

<!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>iFrame異步文件上傳</title> 
</head> 
<body> 
<h1>iFrame異步文件上傳</h1> 
<form method="post" enctype="multipart/form-data"> 
  用戶名: <input type="text" name="username" /><br /> 
  上傳頭像: <input type="file" name="uploadphoto" onchange="startUpload(this.form)" /> 
  <iframe style="display:none" mce_style="display:none" name="uploadframe"></iframe> 
  <input type="hidden" id="photo" name="photo" value="" /> 
  <div id="displayphoto"></div> 
  <input type="submit" name="submitted" value="提交" onclick="formSubmit(this.form)" /> 
</form> 
<?php  
//頁面提交后顯示相關信息 
if (isset($_POST['submitted'])) { 
  $html = '<hr /><p>上傳成功!</p>'; 
  $html .= '<p>用戶名:'.htmlspecialchars($_POST['username']).'</p>'; 
  $html .= '<p>頭像地址:'.htmlspecialchars($_POST['photo']).'</p>'; 
  $html .= '<div><img src="'.htmlspecialchars($_POST['photo']).'" mce_src="'.htmlspecialchars($_POST['photo']).'" /></div><hr />'; 
  echo $html; 
} 
?> 
</body> 
</html> 
<mce:script type="text/javascript"><!-- 
//選擇了文件后開始異步上傳 
function startUpload(oForm) { 
  document.getElementById('displayphoto').innerHTML = 'Loading...'; 
  oForm.action = 'proceedupload.php'; 
  oForm.target = 'uploadframe'; 
  oForm.submit(); 
} 
//整個頁面的提交 
function formSubmit(oForm) { 
  oForm.action = document.URL; 
  oForm.target = '_self'; 
  oForm.submit(); 
} 
// --></mce:script> 

proceedupload.php頁面如下:

<?php 
//這里僅以特定圖片格式舉例,本應動態(tài)獲取 
$url = 'upload/img' . time() . '.jpg'; 
if (move_uploaded_file($_FILES['uploadphoto']['tmp_name'], $url)) { 
  //刪除之前的圖片 
  $_POST['photo'] !== '' && unlink($_POST['photo']); 
?> 
<html> 
<head> 
<body onLoad="doneLoading(parent, '<?=$url?>')"> 
</body> 
</html> 
<mce:script type="text/javascript"><!-- 
//在頁面上顯示剛剛上傳成功的圖像 
function doneLoading(theFrame, url) { 
  var oDiv = theFrame.document.getElementById('displayphoto'); 
  oDiv.innerHTML = '<img src="' + url + '" mce_src="' + url + '" alt="上傳頭像" />'; 
  theFrame.document.getElementById('photo').value = url; 
} 
// --></mce:script> 
<?php 
}
?>

感興趣的朋友可以測試運行一下本文實例,相信本文所述對大家PHP程序設計的學習有一定的借鑒價值。

相關文章

  • PHP的偽隨機數(shù)與真隨機數(shù)詳解

    PHP的偽隨機數(shù)與真隨機數(shù)詳解

    這篇文章主要介紹了PHP的偽隨機數(shù)與真隨機數(shù)詳解,本文首先講解了真隨機數(shù)和偽隨機數(shù)的相關概念,并給出了比用mt_rand()函數(shù)產(chǎn)生更好的偽隨機數(shù)的一段例子代碼,需要的朋友可以參考下
    2015-05-05
  • php 歸并排序 數(shù)組交集

    php 歸并排序 數(shù)組交集

    2個已經(jīng)排序好的數(shù)組交集,學習php的朋友可以參考下。
    2011-05-05
  • 5種PHP創(chuàng)建數(shù)組的實例代碼分享

    5種PHP創(chuàng)建數(shù)組的實例代碼分享

    在本文將數(shù)組的各種創(chuàng)建方式用PHP實例代碼的方式分享給大家,感興趣的朋友可以了解下
    2014-01-01
  • PHP封裝的數(shù)據(jù)庫保存session功能類

    PHP封裝的數(shù)據(jù)庫保存session功能類

    這篇文章主要介紹了PHP封裝的數(shù)據(jù)庫保存session功能類,涉及php基于SessionHandlerInterface接口實現(xiàn)的讀取、寫入、保存、銷毀等常用操作方法,需要的朋友可以參考下
    2016-07-07
  • PHP實現(xiàn)ftp上傳文件示例

    PHP實現(xiàn)ftp上傳文件示例

    這篇文章主要介紹了PHP實現(xiàn)ftp上傳文件的方法,是非常實用的技巧,需要的朋友可以參考下
    2014-08-08
  • PHP7.1新功能之Nullable Type用法分析

    PHP7.1新功能之Nullable Type用法分析

    這篇文章主要介紹了PHP7.1新功能之Nullable Type用法,結合實例形式較為詳細的對比分析了Nullable Type類型操作的使用技巧,需要的朋友可以參考下
    2016-09-09
  • php 過濾危險html代碼

    php 過濾危險html代碼

    用PHP過濾html里可能被利用來引入外部危險內容的代碼。有些時候,需要讓用戶提交html內容,以便豐富用戶發(fā)布的信息,當然,有些可能造成顯示頁面布局混亂的代碼也在過濾范圍內。
    2009-06-06
  • php使用pdo連接報錯Connection failed SQLSTATE的解決方法

    php使用pdo連接報錯Connection failed SQLSTATE的解決方法

    這篇文章主要介紹了php使用pdo連接報錯Connection failed SQLSTATE的解決方法,涉及針對配置文件的修改,具有一定的參考借鑒價值,需要的朋友可以參考下
    2014-12-12
  • Discuz!下Memcache緩存實現(xiàn)方法

    Discuz!下Memcache緩存實現(xiàn)方法

    在PHP+MySQL架構的站點中,本文重點從MySQL的角度去分析如何使Discuz!論壇(或者類似的PHP+MySQL架構的程序)應對大訪問量。同時給出一些使用Memcache去減輕MySQL壓力的建議
    2010-05-05
  • php獲取本地圖片文件并生成xml文件輸出具體思路

    php獲取本地圖片文件并生成xml文件輸出具體思路

    本文將詳細介紹下php獲取本地圖片文件并生成xml文件輸出,代碼簡單實用,感興趣的朋友可以參考下哈,希望對你學習php有所幫助
    2013-04-04

最新評論