首頁  >  文章  >  php教程  >  用iframe實作不刷新整個頁面上傳圖片的實例

用iframe實作不刷新整個頁面上傳圖片的實例

高洛峰
高洛峰原創
2016-12-06 14:48:191545瀏覽

常用到上傳圖片即時預覽的功能,實現方式很多,用flash+js實現的比較多,今天遇到同事不想用flash之類也不想用網上的插件,那麼我給了他一種解決辦法:

思路:

1. 頁面上傳圖片的部分放到一個iframe中,iframe設置無邊框無滾動條,和所嵌入的頁面風格一致,根據需要設置固定大小

2. 在iframe中提交上傳圖片的表單,提交後再次返回原頁面(iframe所指向的頁面)並從伺服器帶回剛上傳的圖片地址,調用父頁面的js代碼加載圖片

3. 如果用到要進度條等效果,就在表單提交後,在servlet一端輸出進度條,然後一直發送調用js腳本,及時改變頁面內容。其他功能諸如取消等功能可以參考推送

下面的程式碼實現了基本的文件上傳:

index.jsp頁面裡嵌入一個文件上傳的頁面_uploadpic.jsp

index.jsp:

...
 
 <script type="text/javascript">
 /*
param imgPath:img path of uploaded
 
this function will show the uploaded img in div(id=show_img_div)
 */
 function showUploadImg(imgPath){
if(imgPath=="")return;
document.getElementById("show_img_div").innerHTML="<img src=&#39;"+imgPath+"&#39;/>";
}
 </script>
 <body>
 <iframe scrolling="no"width="300" height="100" src="_uploadpic.jsp"></iframe>
<!-- use to show img(uploaded) -->
<div id="show_img_div"></div>
 
 
...

 

_uploadpic.jsp:

...
 
<body onload="javascript:window.parent.showUploadImg(&#39;${img}&#39;);"><!--&#39;${img}&#39; request或者session中的图片地址(从服务器传递来的) -->
<form method="post" id="upload_form" action="${pageContext.request.contextPath }/servlet/IframeTestImageServlet" enctype="multipart/form-data">
  <input type="file" name="pic"/><br/><input type="submit" value="upload"/>
  </form>
</body>
 
 
...

   

servlet:(處理圖片上傳的servlet)

//处理上传的图片
 
.... 代码多 此处略去
 
   //把刚上传的图片在服务器中的地址返回到客户端
 
request.setAttribute("img",request.getContextPath()+"/img/mm.jpg");// &#39;/img/mm.jpg&#39;表示刚上传图片在服务器中的地址
request.getRequestDispatcher("/_uploadpic.jsp").forward(request, response);

   

內容

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn