使用Ajax 方式上传文件,显示进度条一般都要求IE10以上的浏览器,但Chrome Firefox Safari这些版本低些都可以支持; 如果上传文件的话可以使用 jQuery form 插件,如果同时上传多个文件的可以使用 jQuery Uploadify插件,用SWFUpload没有浏览器的限制但是要求浏览安装Flash插件,当前还有很多这方面的插件,你可以根据自己使用的习惯来选择;
我用过更毒的办法,用socket,完全不是受PHP.INI限制,可实时显示上传进度,不过需要你的服务器的防火墙设置有一定要求,因为用这个办法,要动态打开服务器高于1024以上的端口用于接收数据
默认只能传最大 2M 的文件。 不过,可以配置php.ini文件,修改上传文件大小的限制。 配置php.ini文件 (以上传500M以下大小的文件为例) 查找以下选项并修改-> file_uploads = On ;打开文件上传选项 upload_max_filesize = 500M ;上传文件上限 如果要上传比较大的文件,仅仅以上两条还不够,必须把服务器缓存上限调大,把脚本最大执行时间变长 post_max_size = 500M ;post上限 max_execution_time = 1800 ; Maximum execution time of each script, in seconds脚本最大执行时间 max_input_time = 1800 ; Maximum amount of time each script may spend parsing request data memory_limit = 128M ; Maximum amount of memory a script may consume (128MB)内存上限
PHP的工作原理
PHP的所有应用程序都是通过WEB服务器(如IIS或Apache)和PHP引擎程序解释执行完成的,工作过程:
(1)当用户在浏览器地址中输入要访问的PHP页面文件名,然后回车就会触发这个PHP请求,并将请求传送化支持PHP的WEB服务器。
(2)WEB服务器接受这个请求,并根据其后缀进行判断如果是一个PHP请求,WEB服务器从硬盘或内存中取出用户要访问的PHP应用程序,并将其发送给PHP引擎程序。
(3)PHP引擎程序将会对WEB服务器传送过来的文件从头到尾进行扫描并根据命令从后台读取,处理数据,并动态地生成相应的HTML页面。
(4)PHP引擎将生成HTML页面返回给WEB服务器。WEB服务器再将HTML页面返回给客户端浏览器。
最近我们项目需要一台图片服务器存储用户头像,我们使用zimg处理和存储图片,下面简单介绍一下如何使用PHP上传图片到zimg,并获取相应图片的返回信息使用curl库实现上传根据zimg使用文档,我们想要让zimg返回json信息,就必须raw_post上传图片,下面是演示代码$upload_url='http://192.168.0.99:5000/upload';$image_file='./test.jpg'
;//获取图片后缀$value=explode(".",$image_file);$extension=strtolower(array_pop($value))
;//生成本地临时存储路径,并生成相应文件夹$dir='aurthur';$save_path='uploads/'.$dir.'/'.date('Y').'/'.date('md').'/';$save_rule=md5(uniqid(mt_rand(),true))
;if(!is_dir($save_path)){if(false===mkdir($save_path,0700,true)){exit('创建文件夹失败');}}$save_image_file=$save_path.$save_rule.".$extension"
;//把图片存储到临时路径file_put_contents($save_image_file,file_get_contents($image_file))
;//获取临时保存的图片的真实地址(绝对路径)$realpath=realpath($save_image_file)
;//上传图片到zimg图片存储服务$ch=curl_init()
;//将图片内容读取到变量$post_data;$post_data=file_get_contents($realpath);$headers=array()
;//一定要添加此header$headers[]='Content-Type:'.$extension;curl_setopt($ch,CURLOPT_URL,$upload_url)
;curl_setopt($ch,CURLOPT_HEADER,false)
;curl_setopt($ch,CURLOPT_HTTPHEADER,$headers)
;curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);curl_setopt($ch,CURLOPT_POST,true)
;curl_setopt($ch,CURLOPT_BINARYTRANSFER,true)
;curl_setopt($ch,CURLOPT_POSTFIELDS,$post_data)
;//raw_post方式$info=curl_exec($ch);curl_close($ch);$json=json_decode($info,true);$signature=$json['info']['md5'];echo$signature;如果想测试代码的话,请把上面的uploadurl改成你自己的zimg服务器地址,并把image_file改成你需要上传的图片的路径
以上就是关于php文件上传教程以及php如何实现上传文件显示上传进度百分比的相关回答,有更多疑问可以加微。Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有