




已阅读5页,还剩8页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于PHP的AJAX技术实现文件异步上传本文关键词PHPAJAX异步上传异步的文件上传是在现代的AJAX实现的WEB应用里面经常要遇到,必须解决的问题。但是标准的AJAX类(XMLHTTPREQUEST)无法实现传输文件的功能。因此,这里讨论的内容就是如何在AJAX的技术的基础之上构建异步的文件上传功能。在这个功能当中需要使用到内置的框及(IFRAME)来传输文件。这个功能实现的效果是页面在上传文件的时候,用户还可以使用该页面并且填写文件描述。这个例子是我们引用AJAX的经典案例进行分析的。系统环境较新版本的浏览器。例如OPERA,FIREFOX或者INTERNETEXPLORER。PHP430或更高版本PHP5版本PHP中的SHORT_OPEN_TAG选项开启否则会发生解析错误。功能分析通过内置的IFRAME(框架)进行文件上传。具备包括三个部分组成。在页面中间有一个简单的FORM表单,表单只包含了INPUTTYPE“FILE“控件。这个表单的目标链接就是一个隐藏得IFRAME通过CSS的风格“DISPLAYNONE“实现并且表单里面唯一一个控件的ONCHANGE事件用来触发JAVASCRIPT函数。这个函数的作用是检查用户提交的扩展名,然后提交表单。在服务器端用PHP编写了一个处理过程(用FILEFRAME坐注释了)。这个处理过程用来把从客户端上传的文件进行检查后保存在服务器,并且通过JAVASCRIPT代码的形式返回给用户。返回给用户的JAVASCRIPT脚本通过“PARENTWINDOWDOCUMENT“更改了用户现在正在查看的页面,设置了文件的名称并启用了让用户提交表单的按钮。启用按钮的操作是通过GETELEMENTBYID函数实现的。在主页面还有一个表单,它包含了用户提交的描述和隐藏的文件名。用户可以在文件上传的同时填写文件的描述。当文件上传结束以后,用户点击按钮,就可以看上传以后返回给用户的文件信息了。(通过返回来的文件名和用户输入的描述构成文件信息)。可能你会说这么操作不符合常理文件在用户确认之前就已经被提交了。如果用户没有提交的话,情况会如何呢。你可以自己在扩展处理被用户放弃的文件。这个例子把文件存储在一个文件系统的目录下。你需要在脚本开始运行的时候配置下这个目录,具体的包含这个目录信息的变量是UPLOAD_DIR和WEB_UPLOAD_DIR。这里有一个对目录是否可写的权限检查。这里我们用到了以下几个PHP函数MOVE_UPLOADED_FILE转移一经上传到服务器的文件FOPEN打开文件FWRITE把内容写入文件FCLOSE关闭文件STR_REPLACE替换字符串FILESIZE返回文件大小FILEMTIME返回处理时间你可以通过手册查到这些函数如果使用。请注意要把HTM,和PHPUPLOAD_DIR“/VAR/WWW/ANYEXAMPLE/AEU“/文件存储的路径WEB_UPLOAD_DIR“/AEU“/文件在WEB目录下的路径TFUPLOAD_DIR/MD5RAND“TEST“FFOPENTF,“W“IFFFALSEDIE“FATALERRORISNOTWRITABLESETCHMOD777ORSOMETHINGLIKETHIS“FCLOSEFUNLINKTF/处理上传的文件IFISSET_POSTFILEFRAMERESULTERRORRESULT_MSGNOFILEFIELDFOUNDIFISSET_FILESFILE/从浏览器接受文件IF_FILESFILEERRORUPLOAD_ERR_OK/没有错误FILENAME_FILESFILENAME/文件名MOVE_UPLOADED_FILE_FILESFILETMP_NAME,UPLOAD_DIR/FILENAME/处理的主过程转移文件到UPLOAD_DIRRESULTOKELSEIF_FILESFILEERRORUPLOAD_ERR_INI_SIZERESULT_MSGTHEUPLOADEDFILEEXCEEDSTHEUPLOAD_MAX_FILESIZEDIRECTIVEINPHPINIELSERESULT_MSGUNKNOWNERRORECHOHTMLHEADTITLE/TITLE/HEADBODYECHOSCRIPTLANGUAGE“JAVASCRIPT“TYPE“TEXT/JAVASCRIPT“N“ECHOVARPARDOCWINDOWPARENTDOCUMENTIFRESULTOKECHOPARDOCGETELEMENTBYID“UPLOAD_STATUS“VALUE“FILESUCCESSFULLYUPLOADED“ECHOPARDOCGETELEMENTBYID“FILENAME“VALUE“FILENAME“ECHOPARDOCGETELEMENTBYID“FILENAMEI“VALUE“FILENAME“ECHOPARDOCGETELEMENTBYID“UPLOAD_BUTTON“DISABLEDFALSEELSEECHOPARDOCGETELEMENTBYID“UPLOAD_STATUS“VALUE“ERRORRESULT_MSG“ECHO“N“/SCRIPT/BODY/HTMLEXITFUNCTIONSAFEHTMLSSSTR_REPLACE“,SSSTR_REPLACE“,“,SSSTR_REPLACE“,“,SSSTR_REPLACE“,“,SSSTR_REPLACE“,“,SRETURNSIFISSET_POSTDESCRIPTIONFILENAME_POSTFILENAMESIZEFILESIZEUPLOAD_DIR/FILENAMEDATEDATER,FILEMTIMEUPLOAD_DIR/FILENAMEDESCRIPTIONSAFEHTML_POSTDESCRIPTIONHTMLENDHTMLHEADTITLEUPLOADEDBYIFRAMEASYNCFILEUPLOADER/TITLE/HEADBODYH1/H1PTHISISAFILEINFORMATIONPAGEFORYOURUPLOADEDFILEBOOKMARKIT,ORSENDTOANYONE/PPDATE/PPSIZEBYTES/PPDESCRIPTIONPRE/PRE/PPAHREF“/“STYLE“FONTSIZELARGE“DOWNLOADFILE/ABRAHREF“STYLE“FONTSIZESMALL“BACKTOFILEUPLOADING/ABRAHREF“/UPLOADLOGHTML“STYLE“FONTSIZESMALL“UPLOADLOG/A/PBRBREXAMPLEBYAHREF“HTTP/WWWANYEXAMPLECOM/“ANYEXAMPLE/A/BODY/HTMLENDFFOPENUPLOAD_DIR/FILENAMEDESCHTML,“W“FWRITEF,HTMLFCLOSEFMSG“FILEUPLOADED,AHREF/DESCHTMLSEEFILEINFORMATIONPAGE/A“FFOPENUPLOAD_DIR“/UPLOADLOGHTML“,“A“FWRITEF,“PMSG/PN“FCLOSEFSETCOOKIEMSG,MSGHEADER“LOCATIONHTTP/“_SERVERHTTP_HOSTPHP_SELFEXITIFISSET_COOKIEMSGELSEMSG_COOKIEMSGSETCOOKIEMSG,BEGINNINGOFMAINPAGEHTMLHEADTITLEIFRAMEASYNCFILEUPLOADEREXAMPLE/TITLE/HEADBODYPHPIFISSETMSGECHOPSTYLE“FONTWEIGHTBOLD“MSG/PH1UPLOADFILE/H1PFILEWILLBEGINTOUPLOADJUSTAFTERSELECTION/PPYOUMAYWRITEFILEDESCRIPTION,WHILEYOUFILEISBEINGUPLOADED/PFORMACTION“PHP_SELF“TARGET“UPLOAD_IFRAME“METHOD“POST“ENCTYPE“MULTIPART/FORMDATA“INPUTTYPE“HIDDEN“NAME“FILEFRAME“VALUE“TRUE“TARGETOFTHEFORMISSETTOHIDDENIFRAMEFROMWILLSENDITSPOSTDATATOFILEFRAMESECTIONOFTHISPHPSCRIPTSEEABOVELABELFOR“FILE“TEXTFILEUPLOADER/LABELBRJAVASCRIPTISCALLEDBYONCHANGEATTRIBUTEINPUTTYPE“FILE“NAME“FILE“ID“FILE“ONCHANGE“JSUPLOADTHIS“/FORMSCRIPTTYPE“TEXT/JAVASCRIPT“/THISFUNCTIONISCALLEDWHENUSERSELECTSFILEINFILEDIALOG/FUNCTIONJSUPLOADUPLOAD_FIELD/THISISJUSTANEXAMPLEOFCHECKINGFILEEXTENSIONS/IFYOUDONOTNEEDEXTENSIONCHECKING,REMOVE/EVERYTHINGDOWNTOLINE/UPLOAD_FIELDFORMSUBMITVARRE_TEXT/TXT|XML|ZIP/IVARFILENAMEUPLOAD_FIELDVALUE/CHECKINGFILETYPE/IFFILENAMESEARCHRE_TEXT1ALERT“FILEDOESNOTHAVETEXTTXT,XML,ZIPEXTENSION“UPLOAD_FIELDFORMRESETRETURNFALSEUPLOAD_FIELDFORMSUBMITDOCUMENTGETELEMENTBYIDUPLOAD_STATUSVALUE“UPLOADINGFILE“UPLOAD_FIELDDISABLEDTRUERETURNTRUE/SCRIPTIFRAMENAME“UPLOAD_IFRAME“STYLE“WIDTH400PXHEIGHT100PXDISPLAYNONE“/IFRAMEFORDEBUGGINGPURPOSES,ITSOFTENUSEFULTOREMOVE“DISPLAYNONE“FROMSTYLE“ATTRIBUTEBRUPLOADSTATUSBRINPUTTYPE“TEXT“NAME“UPLOAD_STATUS“ID“UPLOAD_STATUS“VALUE“NOTUPLOADED“SIZE“64“DISABLEDBRBRFILENAMEBRINPUTTYPE“TEXT“NAME“FILENAMEI“ID“FILENAMEI“VALUE“NONE“DISABLEDFORMACTION“PHP_SELF“METHOD“POST“ONEFIELDIS“DISABLED“FORDISPLAYINGONLYOTHER,HIDDENONEISFORSENDINGDATAINPUTTYPE“HIDDEN“NAME“FILENAME“ID“FILENAME“BRBRLABELFOR“PHOTO“FILEDESCRIPTION/LABELBRTEXTAREAROWS“5“COLS“
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年会展策划与设计中级考试热点分析及模拟题详解
- 2025年生物质碳化专用炉项目发展计划
- 2025年电力测量仪表项目建议书
- 腕管综合征护理
- 2025年家畜良种胚胎生物工程制品项目合作计划书
- 安徽省A10联盟2025-2026学年高二上学期9月学情调研生物试卷(含答案)
- 2025年教具及类似用具项目发展计划
- 执业临床考试题及答案
- 2025学年北京市房山区高三语文上学期开学考试卷附答案解析
- 2025-2026学年云南省部分学校高二(上)联考数学试卷(8月份)含答案
- 2025建筑工程施工标准合同
- 《激光切割机操作》课件
- 仪表安全培训课件
- 《电机与变压器》全套教学课件
- 2025年大学生创业与实践课程考试卷及答案
- 江苏省事业单位退休人员住房补贴政策
- 2025年人教版小学数学二年级下册期末考试卷(附答案解析)
- 车间物流规划
- 鄂教版六年级心理健康教育教案
- 公司为完善管理制度
- 六项精进培训感悟
评论
0/150
提交评论