文件提交.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
文件提交

/cloudgamer/archive/2008/10/20/1314766.html? 效果预览 上传文件 添加文件: 文件路径 没有添加文件 ? 温馨提示:最多可同时上传 3个文件,只允许上传 jpg,gif文件。 ??? 这里的预览只是前台的效果,要整个系统测试请下载完整实例。 程序说明 【无刷新上传】 要实现文件上传,form必须设置几个属性: 1.action:设为要处理数据的页面地址; 2.method:设为post; 3.enctype/encoding:必须设为multipart/form-data,这里要注意的是在ie中用js修改form的enctype属性是没有效果的,只能修改encoding; 后面两个属性程序初始化时都有设置: this.Form.method?=?post; this.Form.encoding?=?multipart/form-data; 要注意这里的无刷新不是ajax哦,而是利用“古老”的iframe。 由于ajax提交数据必须先获取数据,而js(一般情况下)是不能操作客户端文件,要获取文件数据就更不用说了,所以只能用iframe来做。 先说说iframe实现无刷新上传的原理:利用form的target属性,把数据提交到页面中一个(通常为隐藏的)iframe上。直观点说就是把“刷新”留给iframe。 其实原理跟一般用iframe实现无刷新提交表单是一样的,只是这里换成是文件。 这里关键就是把form的target设为iframe的name: this.Form.target?=?this._FrameName; 【iframe】 如果没有自定义iframe,程序在初始化时会自动创建无刷新所需的iframe的。 首先必须选择一个iframe名,这在无刷新时是必须的,为了每个实例能创建各自的iframe,这里用了一个随机数: this._FrameName?=?uploadFrame_?+?Math.floor(Math.random()?*?1000); 也可以用一个递增的计算器来代替随机数。 接着创建iframe,本以为用document.createElement(iframe)创建再设置它的name属性就行了。 却发现这样设置的name在ie居然不认(有说name是只读属性),还好在网上找到一个方法:“IE 创建元素,还有一个特点,就是可以连同属性一同创建”。 例如我想给动态创建的iframe设置name,可以这样: document.createElement(iframe?name=\?+?this._FrameName?+?\) 不过这个方式在ff会报错: uncaught exception: String contains an invalid character (NS_ERROR_DOM_INVALID_CHARACTER_ERR) 估计是用createElement时不能带name,标准应该也是这样,所以兼容的方式这样写: Codevar?oFrame?=?isIE???document.createElement(iframe?name=\?+?this._FrameName?+?\)?:?document.createElement(iframe); //为ff设置name oF?=?this._FrameName; oFrame.style.display?=?none; var?oFrame?=?isIE???document.createElement(iframe?name=\?+?this._FrameName?+?\)?:?document.createElement(iframe); //为ff设置name oF?=?this._FrameName; oFrame.style.display?=?none; 关于这方面更详细的内容请看这里。 创建完还需要插入到body中,一般的做法是使用document.body.appendChild,但在ie中会有“已终止操作”错误,可以用下面这段代码测试: Codebody div script document.body.appendChild(document.createElement(div)); /script /div /body body div script document.body.appendChild(document.createElement(div)); /script /div /body 网上找到一个解析:“原来FF下的实现机制是当页面还没有完全读取完时body元素就已经存在了,而IE只有页面完全读取结束body元素才会存

文档评论(0)

hf916589 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档