- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于PHP的AJAX技术实现文件异步上传
本文关键词: php AJAX 异步上传
异步的文件上传是在现代的AJAX实现的Web应用里面经常要遇到,必须解决的问题。但是标准的AJAX类(XmlHttpRequest)无法实现传输 文件的功能。因此,这里讨论的内容就是如何在AJAX的技术的基础之上构建异步的文件上传功能。在这个功能当中需要使用到内置的框及(IFRAME)来传 输文件。这个功能实现的效果是页面在上传文件的时候,用户还可以使用该页面并且填写文件描述。 这个例子是我们引用AJAX的经典案例进行分析的。 系统环境 · 较新版本的浏览器。例如Opera,Firefox或者 Internet Explorer。 · PHP 4.3.0 或更高版本 · PHP 5 版本 · PHP 中的 short_open_tag 选项开启(否则会发生解析错误)。 功能分析 通过内置的IFRAME(框架)进行文件上传。具备包括三个部分组成。 · 在页面中间有一个简单的<form...表单,表单只包含了<input type=file ... >控件。这个表单的目标链接就是一个隐藏得IFRAME(通过 CSS的风格 display: none;实现)并且表单里面唯一一个控件的OnChange事件用来触发JavaScript函数。这个函数的作用是检查用户提交的扩展名,然后提交 表单。 · 在服务器端 用PHP编写了一个处理过程(用FILEFRAME坐注释了)。这个处理过程用来把从客户端上传的文件进行检查后保存在服务器,并且通过 Javascript代码的形式返回给用户。返回给用户的Javascript脚本通过parent.window.document更改了用户现在 正在查看的页面,设置了文件的名称并启用了让用户提交表单的按钮。启用按钮的操作是通过getElementById函数实现的。 · 在主页面还有一个表单,它包含了用户提交的描述和隐藏的文件名。用户可以在文件上传的同时填写文件的描述。当文件上传结束以后,用户点击按钮,就可以看上传以后返回给用户的文件信息了。(通过返回来的文件名和用户输入的描述构成文件信息)。 可能你会说这么操作不符合常理:文件在用户确认之前就已经被提交了。如果用户没有提交的话,情况会如何呢。你可以自己在扩展处理被用户放弃的文件。 这个例子把文件存储在一个文件系统的目录下。你需要在脚本开始运行的时候配置下这个目录,具体的包含这个目录信息的变量是$upload_dir 和$web_upload_dir。这里有一个对目录是否可写的权限检查。 这里我们用到了以下几个PHP函数: · move_uploaded_file - 转移一经上传到服务器的文件 · fopen - 打开文件 · fwrite - 把内容写入文件 · fclose - 关闭文件 · str_replace - 替换字符串 · filesize - 返回文件大小 · filemtime - 返回处理时间 你可以通过手册查到这些函数如果使用。请注意要把HTM(<, >, )标记替换为(lt;, gt; 和 amp;).
<?php$upload_dir = /var/www/anyexample/aeu; // 文件存储的路径$web_upload_dir = /aeu; // 文件在Web目录下的路径$tf = $upload_dir./.md5(rand())..test;$f = @fopen($tf, w);if ($f == false) die(Fatal error! is not writable. Set chmod 777 or something like this);fclose($f);unlink($tf);//处理上传的文件if (isset($_POST[fileframe])) { $result = ERROR; $result_msg = No FILE field found; if (isset($_FILES[file])) // 从浏览器接受文件 { if ($_FILES[file][error] == UPLOAD_ERR_OK) // 没有错误 { $filename = $_FILES[file][name]; // 文件名 move_uploaded_file($_FILES[file][tmp_name], $upload_dir./.$filename); // 处理的主过程-转移文件
文档评论(0)