最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP+iFrame實(shí)現(xiàn)頁(yè)面無(wú)需刷新的異步文件上傳

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

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

說(shuō)到iframe,現(xiàn)在用它的人是越來(lái)越少了,并且很多人都相信它應(yīng)該被AJAX所取代,的確如此,因?yàn)锳JAX太出色了。

不過(guò)有一種情況的實(shí)現(xiàn)我還是選擇了iframe,這就是本文要說(shuō)的文件的異步上傳,感興趣的可以試試,如果用原生的AJAX來(lái)實(shí)現(xiàn)應(yīng)該是要復(fù)雜的多。

先來(lái)給初學(xué)者補(bǔ)補(bǔ)基礎(chǔ)知識(shí):

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

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

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

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

upload.php頁(yè)面如下:

<!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  
//頁(yè)面提交后顯示相關(guān)信息 
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"><!-- 
//選擇了文件后開(kāi)始異步上傳 
function startUpload(oForm) { 
  document.getElementById('displayphoto').innerHTML = 'Loading...'; 
  oForm.action = 'proceedupload.php'; 
  oForm.target = 'uploadframe'; 
  oForm.submit(); 
} 
//整個(gè)頁(yè)面的提交 
function formSubmit(oForm) { 
  oForm.action = document.URL; 
  oForm.target = '_self'; 
  oForm.submit(); 
} 
// --></mce:script> 

proceedupload.php頁(yè)面如下:

<?php 
//這里僅以特定圖片格式舉例,本應(yīng)動(dòng)態(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"><!-- 
//在頁(yè)面上顯示剛剛上傳成功的圖像 
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 
}
?>

感興趣的朋友可以測(cè)試運(yùn)行一下本文實(shí)例,相信本文所述對(duì)大家PHP程序設(shè)計(jì)的學(xué)習(xí)有一定的借鑒價(jià)值。

相關(guān)文章

  • php 如何獲取文件的后綴名

    php 如何獲取文件的后綴名

    本文給大家匯總了幾種使用PHP實(shí)現(xiàn)獲取文件的后綴名的方法,十分的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下
    2016-06-06
  • PHP?Array?數(shù)組詳細(xì)介紹

    PHP?Array?數(shù)組詳細(xì)介紹

    這篇文章主要介紹了PHP?Array數(shù)組詳細(xì)介紹,PHP中的array實(shí)際上是一個(gè)有序映射。映射是一種把?values?關(guān)聯(lián)到keys的類型,更多詳情需要的小伙伴可以參考一下
    2022-09-09
  • PHP命名空間namespace定義及導(dǎo)入use用法詳解

    PHP命名空間namespace定義及導(dǎo)入use用法詳解

    這篇文章主要介紹了PHP命名空間namespace定義及導(dǎo)入use用法,結(jié)合實(shí)例形式詳細(xì)分析了php中命名空間namespace的功能、定義及導(dǎo)入use相關(guān)使用方法與操作技巧,需要的朋友可以參考下
    2018-03-03
  • php set_time_limit(0) 設(shè)置程序執(zhí)行時(shí)間的函數(shù)

    php set_time_limit(0) 設(shè)置程序執(zhí)行時(shí)間的函數(shù)

    一個(gè)簡(jiǎn)單的例子,在網(wǎng)頁(yè)里顯示1500條語(yǔ)句,如果未設(shè)置失效時(shí)間,則程序執(zhí)行到791時(shí)結(jié)束了,如果把 set_time_limit(0); 前的注釋符//去除,則程序直到1才結(jié)束。
    2010-05-05
  • PHP互換兩個(gè)變量值的方法(不用第三變量)

    PHP互換兩個(gè)變量值的方法(不用第三變量)

    相信每個(gè)剛接觸PHP語(yǔ)言的童鞋們應(yīng)該藕知道,PHP中兩個(gè)變量的值互換是個(gè)很常見(jiàn)的做法,那么下面這篇文章我們就來(lái)介紹幾個(gè)對(duì)于變量值互換的常見(jiàn)操作方法,文中介紹的很詳細(xì),相信對(duì)于大家的理解和學(xué)習(xí)很有幫助,下面有需要的朋友們來(lái)一起看看吧。
    2016-11-11
  • PHP中串行化用法示例

    PHP中串行化用法示例

    這篇文章主要介紹了PHP中串行化用法,結(jié)合實(shí)例形式分析了php使用serialize與unserialize函數(shù)實(shí)現(xiàn)串行化與反串行化操作的相關(guān)技巧,需要的朋友可以參考下
    2016-11-11
  • PHP生成RSS文件類實(shí)例

    PHP生成RSS文件類實(shí)例

    這篇文章主要介紹了PHP生成RSS文件類,可實(shí)現(xiàn)PHP生成RSS文件的功能,對(duì)于網(wǎng)站建設(shè)與優(yōu)化來(lái)說(shuō)具有一定的實(shí)用價(jià)值,需要的朋友可以參考下
    2014-12-12
  • PHP 登錄完成后如何跳轉(zhuǎn)上一訪問(wèn)頁(yè)面

    PHP 登錄完成后如何跳轉(zhuǎn)上一訪問(wèn)頁(yè)面

    訪問(wèn)網(wǎng)站頁(yè)面時(shí),有的頁(yè)面需要授權(quán)才能訪問(wèn),這時(shí)候就會(huì)要求用戶登錄,跳轉(zhuǎn)到登錄頁(yè)面login.php,怎么實(shí)現(xiàn)登錄后返回到剛才訪問(wèn)的頁(yè)面
    2014-01-01
  • php寫入數(shù)據(jù)到CSV文件的方法

    php寫入數(shù)據(jù)到CSV文件的方法

    這篇文章主要介紹了php寫入數(shù)據(jù)到CSV文件的方法,涉及php操作csv文件的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-03-03
  • php計(jì)算兩個(gè)坐標(biāo)(經(jīng)度,緯度)之間距離的方法

    php計(jì)算兩個(gè)坐標(biāo)(經(jīng)度,緯度)之間距離的方法

    這篇文章主要介紹了php計(jì)算兩個(gè)坐標(biāo)(經(jīng)度,緯度)之間距離的方法,涉及php相關(guān)數(shù)學(xué)函數(shù)的使用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-04-04

最新評(píng)論

东至县| 丽水市| 文昌市| 无极县| 巴里| 漯河市| 乐至县| 新安县| 本溪市| 南涧| 疏附县| 阳东县| 囊谦县| 甘孜| 雷山县| 榕江县| 突泉县| 永宁县| 康定县| 鹿泉市| 长兴县| 扎兰屯市| 衡水市| 临沧市| 揭西县| 会东县| 高安市| 上林县| 浪卡子县| 凤冈县| 彰武县| 彰武县| 灯塔市| 隆子县| 新营市| 靖宇县| 巴里| 隆林| 巫山县| 湖口县| 华宁县|