- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 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设置nameoF?=?this._FrameName;oFrame.style.display?=?none;var?oFrame?=?isIE???document.createElement(iframe?name=\?+?this._FrameName?+?\)?:?document.createElement(iframe);//为ff设置nameoF?=?this._FrameName;oFrame.style.display?=?none;
关于这方面更详细的内容请看这里。创建完还需要插入到body中,一般的做法是使用document.body.appendChild,但在ie中会有“已终止操作”错误,可以用下面这段代码测试:
Codebodydivscriptdocument.body.appendChild(document.createElement(div));/script/div/bodybodydivscriptdocument.body.appendChild(document.createElement(div));/script/div/body
网上找到一个解析:“原来FF下的实现机制是当页面还没有完全读取完时body元素就已经存在了,而IE只有页面完全读取结束body元素才会存
您可能关注的文档
最近下载
- 2024年安徽省合肥市庐阳区小升初数学试卷附答案解析.doc VIP
- 2025年陕西铜川市事业单位招聘带编入伍高校毕业生3人笔试模拟试题及参考答案详解一套.docx VIP
- 事业单位宣传工作总结PPT.pptx VIP
- TCCIAT_0003-2019_建筑施工承插型轮扣式模板支架安全技术规程.doc VIP
- 超声波探伤培训教材.doc VIP
- 2024年苏州昆山国创投资集团有限公司招聘考试真题 .pdf VIP
- 合并工作底稿完整版带公式.xls VIP
- 2025江苏苏州昆山国创投资集团有限公司第一期招聘17人考试备考题库及答案解析.docx VIP
- 家具设计软件:SketchUp二次开发_(6).动态组件设计与应用.docx VIP
- 2025江苏苏州昆山国创投资集团有限公司第一期招聘17人笔试模拟试题及答案解析.docx VIP
文档评论(0)