`
Rowen
  • 浏览: 83034 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

仿QQ邮箱附件

    博客分类:
  • HTML
阅读更多
仿QQ邮箱附件,这个只能看不能用。原因忘记了,反正跟IE有关。
<!--   
Author: aqua qin   
Tech blog:http://blog.csdn.net/aquadp/   
Create Date: 2008-4-8 22:00:00  
Last Modify Date: 2008-4-9 22:46:35  
-->   
<HTML>   
<HEAD>   
<script>   
/**//*  
需要注意的几个地方:  
.由于input type=file控件不能对type属性赋值(in IE),所以采用插入HTML代码的方式(insertAdjacentHTML);  
.input type=file控件的value是只读的,不能被赋值;  
.因为用一个input type=file控件有缺陷,就是当用户删除了最后一次添加的文件再添加同样的文件则无法触发onchange事件;  
并且要上传文件,只用一个上传控件是不够的;  
.客户端无法获取文件大小,除非用FSO或ActiveX等。除了img控件,其fileSize可以在图片文件加载完成后获取其文件大小;  
.还有另外一种变通的方法就是用flash与js交互达到获取客户端文件大小的效果(现在flash在安全方面也做了限制);  
*/  
var i = 0;    // 用来动态生成span,upfile的id   
function addAttachmentToList()   
{   
    if (findAttachment(event.srcElement.value)) return;    //如果此文档已在附件列表中则不再添加   
       
    // 动态创建附件信息栏并添加到附件列表中   
    var span = document.createElement('span');   
    span.id = '_attachment' + i;   
    span.innerHTML = extractFileName(event.srcElement.value) + '&nbsp;<a href="javascript:delAttachment(' + (i++) + ')"><font color="blue">删除</font></a><br/>';   
    span.title = event.srcElement.value;   
    G('attachmentList').appendChild(span);   
       
    // 显示附件列表并变换添加附件按钮文本   
    if (G('attachmentList').style.display == 'none')   
    {   
        G('btnAdd').value = '继续添加';   
        G('attachmentList').style.display = '';   
        G('btnClear').style.display = '';   
    }   
  
    G('total').innerText = '当前选择上传'+ G('attachmentList').childNodes.length + '个附件';   
}   
  
function selectAttachment()   
{   
    // 先清除无效动态生成的多余upfile   
    cleanInvalidUpfile();   
       
    // 动态创建上传控件并与span对应   
    var upfile = '<input type="file" style="display:none" onchange="addAttachmentToList();" id="_upfile'+i+'">';   
    document.body.insertAdjacentHTML('beforeEnd', upfile);   
    G('_upfile'+i).click();   
}   
  
function extractFileName(fn)   
{   
    return fn.substr(fn.lastIndexOf('\\')+1);   
}   
  
function findAttachment(fn)   
{   
    var o = G('attachmentList').getElementsByTagName('span');   
    for(var i=0;i<o.length;i++)   
        if (o[i].title == fn) return true;   
    return false;   
}   
  
function delAttachment(id)   
{   
    G('attachmentList').removeChild(G('_attachment'+id));   
    document.body.removeChild(G('_upfile'+id));   
       
    // 当附件列表为空则不显示并且变化添加附件按钮文本   
    if (G('attachmentList').childNodes.length == 0)   
    {   
        G('btnAdd').value = '添加附件';   
        G('attachmentList').style.display = 'none';   
        G('btnClear').style.display = 'none';   
    }   
       
    G('total').innerText = '当前选择上传'+ G('attachmentList').childNodes.length + '个附件';       
}   
  
function cleanInvalidUpfile()   
{   
    var o = document.body.getElementsByTagName('input');   
    for(var i=o.length-1;i>=0;i--)   
      if (o[i].type == 'file' && o[i].id.indexOf('_upfile') == 0)   
      {   
          if (!G('_attachment'+o[i].id.substr(7)))   
              document.body.removeChild(o[i]);   
      }   
}   
  
function clearAttachment()   
{   
    var o = G('attachmentList').childNodes;   
    for(var i=o.length-1;i>=0;i--)   
        G('attachmentList').removeChild(o[i]);   
  
    o = document.body.getElementsByTagName('input');   
    for(var i=o.length-1;i>=0;i--)   
      if (o[i].type == 'file' && o[i].id.indexOf('_upfile') == 0)   
      {   
          document.body.removeChild(o[i]);   
      }       
  
    G('btnAdd').value = '添加附件';   
    G('attachmentList').style.display = 'none';   
    G('btnClear').style.display = 'none';   
       
    G('total').innerText = '当前选择上传0个附件';       
         
}   
  
function getAttachmentInfo()   
{   
    // 已知的js获取本地文件大小的三种方式   
    // 1.通过FSO 2.通过ActiveX 3.通过Flash(设置可能更麻烦)与js交互   
    // 注:QQ邮箱中获取本地文件大小就是采用第二种方式   
}   
  
function G(id)   
{   
    return document.getElementById(id);   
}   
  
</script>   
</HEAD>   
<BODY>   
<fieldset style="border : 1px solid #84A24A;text-align:left;COLOR:#84A24A;FONT-SIZE:    
12px;font-family: Verdana;padding:5px;">   
<legend>模仿QQ邮箱添加附件</legend>   
<input style="background:transparent;border:1px solid #84A24A;color:#84A24A" type="button" value="添加附件" id="btnAdd" onclick="selectAttachment();">&nbsp;<input type="button" value="清空附件" style="background:transparent;border:1px solid #84A24A;color:#84A24A" id="btnClear" style="display:none" onclick="clearAttachment();">   
<div id="attachmentList" style="margin:3px 0px 0px 0px;padding:4px 3px 4px 3px;background-color:#DEEBC6;display:none;border:1px solid #84A24A;">   
</div>   
<div id="total" style="margin:3px 0px 0px 0px;">当前选择上传0个附件</div>   
</fieldset>   
</BODY>   
</HTML>  
分享到:
评论

相关推荐

    android简单邮箱仿QQ邮箱

    仿QQ邮箱的应用需要创建类似的设计,包括登录页面、邮件列表、邮件详情页、附件查看和下载等。使用XML文件定义布局,结合Java或Kotlin代码进行动态操作。 4. **网络通信**: 发送和接收邮件需要用到HTTP/HTTPS...

    C#获取邮箱邮件及附件

    本主题聚焦于利用C#从QQ邮箱和网易邮箱获取邮件及其附件,这一过程通常涉及邮件协议POP3(Post Office Protocol version 3)。 POP3是Internet上接收电子邮件的一种标准协议,它允许用户从邮件服务器下载邮件。C#...

    winwebmai3.8.0.1-仿QQ邮箱模板

    《winwebmai3.8.0.1-仿QQ邮箱模板》是一款专为Windows平台设计的Web邮件客户端软件,其核心在于提供与QQ邮箱类似的用户体验。该版本支持皮肤更新,让用户可以根据个人喜好自定义界面风格,提升使用时的舒适度。 在...

    仿QQ邮箱大文件上传组件,带进度条,.net版本

    本项目“仿QQ邮箱大文件上传组件”正是针对这一需求而设计,其核心是利用了开源库SwfUpload。SwfUpload是一款优秀的Flash-based文件上传组件,它允许在不刷新页面的情况下实现多文件异步上传,并且能够展示详细的...

    精典源码之仿QQ邮箱安卓客户端项目.rar

    【标题】精典源码之仿QQ邮箱安卓客户端项目 这个源码项目是对QQ邮箱安卓客户端的仿制,旨在帮助开发者理解和学习如何构建一个类似的应用。通过深入研究这个项目,可以掌握Android应用开发中的关键技术和设计模式。 ...

    下载QQ邮件附件并将其标为已读C#源码

    综上所述,实现下载QQ邮件附件并将其标为已读的C#源码,主要涉及QQ邮箱API的使用,OAuth2.0授权,HTTP请求的发送,JSON解析以及文件I/O操作。理解并掌握这些技术点,可以帮助开发者创建高效且可靠的邮件处理程序。

    C# 邮箱附件下载

    在本文中,我们将深入探讨如何使用C#编程语言来实现邮箱附件的下载功能,并在下载完成后自动删除相应的邮件。C#是一种广泛应用于Windows应用程序开发、Web应用和移动应用的编程语言,其强大的.NET框架提供了丰富的...

    java代码实现QQ邮箱发送附件

    这个例子展示了如何使用JavaMail API来发送一封包含附件的邮件,适用于QQ邮箱或其他支持SMTP服务的邮件提供商。请注意,你需要根据自己的实际情况替换`EmailConfig`中的账号和密码。此外,确保邮件服务器设置正确,...

    仿QQ邮箱安卓客户端项目Android应用源码

    【标题】"仿QQ邮箱安卓客户端项目Android应用源码"是一个Android开发的实践项目,旨在模仿QQ邮箱的用户界面和功能。这个项目可以帮助开发者学习和理解如何在Android平台上构建一个功能丰富的邮件应用程序。 【描述...

    VC++通过QQ邮箱发送邮件例子

    在VC++环境中,通过QQ邮箱发送邮件涉及到的主要知识点包括SMTP(Simple Mail Transfer Protocol)协议、MIME(Multipurpose Internet Mail Extensions)编码以及QQ邮箱的SMTP服务器设置。下面将详细讲解这些概念及其...

    java实现qq邮箱发送多人邮件带模板带附件(文件流方式获取附件)

    可以实现qq邮箱发送多人邮件,邮件可配置模板,邮件可以附带附件,附件的获取方式采用文件流方式

    IdPOP3做的-QQ邮箱附件接收器

    批量下载QQ邮箱中的所有附件 procedure TFrm_QQMailRev.bt_revClick(Sender: TObject); var i,j,fNum,fCount : integer; tmp, fName : string; begin bt_rev.Enabled := false; IdMessage1.CharSet := 'gb2312';...

    php发送邮件功能(qq授权可传递附件功能)

    总结来说,使用PHP发送邮件,特别是带有附件的邮件,推荐使用PHPMailer这样的库,结合QQ邮箱的SMTP服务,可以轻松实现功能并确保邮件发送的可靠性。通过正确配置和使用这些工具,你可以构建出高效且稳定的邮件系统。

    Android仿QQ邮箱客户端源码.zip

    《深入解析Android仿QQ邮箱客户端源码》 在移动互联网时代,邮箱客户端是人们日常工作中不可或缺的工具之一,尤其对于企业级应用,如QQ邮箱,其便捷性与功能性深受用户喜爱。本文将针对"Android仿QQ邮箱客户端源码...

    QQ邮箱附件无法解决办法

    qq邮箱附件下载办法,遇到不能下载的情况时,就可以用这种方法

    java发送qq邮件 支持群发 附件等等

    3. **QQ邮箱配置**: 要使用Java发送QQ邮件,首先需要在QQ邮箱中开启SMTP服务,并获取授权码。SMTP(Simple Mail Transfer Protocol)是电子邮件发送的标准协议,而授权码是QQ邮箱为了安全考虑提供的代替密码的认证...

    js发送邮件带附件

    在IT领域,特别是Web开发中,使用JavaScript(简称JS)实现邮件发送功能并附带附件是一种常见的需求。根据给定的文件信息,我们将深入探讨如何使用JavaScript通过网页发送带有附件的电子邮件,包括代码分析、原理...

    C#发送邮件(带附件)

    在这个例子中,我们以QQ邮箱为例,因为文件名是"qq邮箱附件上传"。QQ邮箱提供SMTP服务,需要在QQ邮箱的账户设置中找到SMTP服务器信息,包括地址、端口号、用户名(通常为全邮箱地址)和授权码(代替密码)。 请注意...

    用Delphi2010 实现邮件附件收发功能

    用Delphi2010 实现邮件附件收发功能 TIdPOP3组件简介 TIdPOP3 是用来接收邮件服务器的邮件信息到用户端的一个组件。它实现了RFC 1939协议。 在使用TIdPOP3组件时需设置它的几个成员属性。 Host :指定邮件服务器,...

    qq邮箱-mail

    4. **文件中转站**:QQ邮箱提供大文件中转站功能,允许用户上传和分享大文件,解决了传统邮件附件大小限制的问题。 5. **超大附件**:QQ邮箱支持发送超大附件,最高可达2GB,且可以使用腾讯云链接的方式分享文件,...

Global site tag (gtag.js) - Google Analytics