php 文件上传机理
文件上传机理简单,通常的做法是通过<form>表单以 enctype=”multipart/form-data” 的方式将附件数据POST给服务器,然后在后台用$_FIFES变量获取关于附件的名称、临时保存未知、大小、错误信息等数据,此时利用php将临时保存的文件利用copy或者rename命令将文件存到指定位置即可。
ajax上传通常采用的方式也是构建一个iframe对象的form,然后post给后台,不过现在html5已经可以实现直接构建multipart/form-data数据流进行传输,即实现拖动上传。
form的文件上传input中一定要有name属性,以作为post数据的索引, 在上传时可以直接用action指定数据发送位置,还可以设置 onsubmit=”return chkForm();” 利用JS进行初步简单数据检测,甚至可以临时修改action,通常一个type=”submit”的button 响应单击事件后就能直接发送form数据。
当数据POST到后台后,通常PHP的处理脚本会执行如下几步:
- 检测POST过来的$_FILES是为空,还是单文件或者多文件。
- 如果是单文件,先构建一个关于时间的随即名作为该文件的保存名字,也就是最新的路径,然后判断服务器确实有临时文件,并且有文件名等数据,然后把文件从临时路径move_uploaded_file到新的路径,用新的名称保存起来。同时建立一个数组,存起这些数据。
- 如果是多文件,只需把单文件的遍历一遍即可。
文件上传的机理仅仅如此。
还没有人评论过,来坐沙发吧.