zoukankan      html  css  js  c++  java
  • Gmail客户端详细架构之二:象Gmail一样上传文件

      Gmail上传文件提供给我们很多证据,证明使用AJAX和iframes是web 2.0应用不可避免的。Gmail是最先进的web应用之一,让古老的在线email服务焕发的新生。这一篇文章中我们将看看gmail是如何在emal中上传文件的。

    这是Gmail客户端详细架构系列的第二篇,第一篇请看:Gmail客户端详细架构之一

    这一篇文章中我们将看看gmail是如何在emal中上传文件的。到处都是AJAX,AJAX能够带来良好的用户体验,尤其能预先完成用户准备执行的动作。

    Gmail上传文件提供给我们很多证据,证明使用AJAX和iframes是web 2.0应用不可避免的。Gmail是最先进的web应用之一,让古老的在线email服务焕发的新生。



    上面是Gmail的创建新邮件界面。

    当你选择好了你的email需要附带的文件,然后开始写email正文,当你的email还没有完成,gmail的文件上传已经结束了,这是怎样实现的呢?

    首先这不是使用你常用的multipart/form-data AJAX模式,Gmail使用了iframe来上传附件,它通过代码:style=”display:none” 隐藏了这个iframe

    Js代码
    1. <form target="iframename" action="upload.php">   


    为了模仿动态AJAX效果更新你的界面,在upload.php文件最后部分添加了JavaScript

    Js代码
    1. <?php   
    2. $target_path = "upload/";   
    3.   
    4. $target_path = $target_path . basename( $_FILES['filefieldname']['name']);    
    5.   
    6. if(move_uploaded_file($_FILES['filefieldname']['tmp_name'], $target_path)) {   
    7.     echo "The file ".  basename( $_FILES['uploadedfile']['name']).    
    8.     " has been uploaded";   
    9. else{   
    10.     echo "There was an error uploading the file, please try again!";   
    11. }?>   
    12. <script>   
    13. parent.document.getElementById('uploadedfile').innerHTML += '   
    14. <a href="upload/<?php echo $_FILES['filefieldname']['name'] ?>"><?php echo $_FILES['filefieldname']['name'] ?></a>';   
    15. </script>  


    于是你的界面文件包含这个iframe,并且用upload.php来上传文件

    Js代码
    1. <?php   
    2. <form  target="hiddenframe" enctype="multipart/form-data" action="upload.php" method="POST" name="uploadform">   
    3. <p>   
    4.   <label>To:   
    5.   <input name="textfield2" type="text" id="textfield2" size="60" maxlength="60" />   
    6.   
    7.   Subject:     
    8.   <input name="textfield" type="text" id="textfield" size="60" maxlength="60" />   
    9.   
    10.   Attach File:   
    11.   <input type="file" name="filefieldname" id="fileField"   onchange="document.uploadform.submit()"/>   
    12.   </label>   
    13. </p>   
    14. <p id="uploadedfile" >   
    15.   <label></label>   
    16. </p>   
    17. <p>   
    18.   <label>   
    19.   <input type="submit" name="button" id="button" value="Submit" />   
    20.   </label>   
    21. </p>   
    22. <iframe name="hiddenframe" style="display:none" >Loading...</iframe>   
    23. </form>  


    你可以在这里下载所有的源文件:http://www.sajithmr.com/wp-content/uploads/2007/11/file-upload-like-gmail.rar

    参考:Upload Files Like Gmail
    原文:dzone.com
    来自:http://www.javaeye.com/news/2608

    生活因朋友而精彩

  • 相关阅读:
    MongoDB 创建数据库
    MongoDB
    MongoDB 概念解析
    window平台安装 MongoDB(二)
    MongoDB入门学习(1)
    解决DevExpress10.2.4版本在VS2012工具箱控件不显示的问题
    Aspose.Word 输出表格后空格字符丢失的解决方法
    ArcEngine 创建空间参考设置默认域
    SPATIALITE 各版本数据库差异
    WGS84投影的WKID说明
  • 原文地址:https://www.cnblogs.com/plummoon/p/1226148.html
Copyright © 2011-2022 走看看