解决nginx上传模块nginx_upload_module传递GET参数的方法总结

 

最近用户反映我们的系统只能上传50M大小的文件, 希望能够支持上传更大的文件。

很显然PHP无法轻易实现大文件上传, 因为会有各种各样的郁闷问题, 比如服务器超时等, 那么如何解决呢? 我想到了​nginx_upload_module​!!!

如何安装​nginx_upload_module​? 请看这里:​nginx_upload_module安装使用教程

解决了大文件上传之后又遇到了新问题, 我们希望通过​nginx_upload_module​给后台php处理程序以GET方式传输数据(当然​nginx_upload_module​支持POST数据传递, 却不支持GET)

 

下面我解决​nginx_upload_module​使用GET传参的方法公布出来,希望能够帮助到和我一样需求的朋友!

 

修改nginx配置文件(程序站点配置文件test.conf)


1


2


3


4


5


6


7




​location ​​​​/upload_waynerqiu​​ ​​{​


​upload_pass_args on;​


​upload_resumable on;​


​upload_pass ​​​​/up_test​​​​.php?$args;​


​#此处省略掉详细配置…​


​#如需要详细的参考可查看http://waynerqiu.com/7/136.html​


​}​


html表单代码(up_test.php,此页面即作为表单页同时也负责nginx_upload_module回调页面)

 


1


2


3


4


5


6


7


8


9


10


11


12


13


14


15


16


17




​<​​​​html​​​​>​


​<​​​​head​​​​>​


​<​​​​title​​​​>Test upload</​​​​title​​​​>​


​</​​​​head​​​​>​


​<​​​​body​​​​> ​


​<?​​​​php​


​print_r($_REQUEST);​


​?>​


​<​​​​h2​​​​>Select files to upload</​​​​h2​​​​>​


​<​​​​form​​ ​​enctype​​​​=​​​​'multipart/form-data'​​ ​​action​​​​=​​​​'/upload_waynerqiu?who=abc&she=def'​​ ​​method​​​​=​​​​'post'​​​​>​


​<​​​​input​​ ​​type​​​​=​​​​'file'​​ ​​name​​​​=​​​​'file1'​​​​><​​​​br​​​​> ​


​<​​​​input​​ ​​type​​​​=​​​​'submit'​​ ​​name​​​​=​​​​'submit'​​ ​​value​​​​=​​​​'Upload'​​​​>​


​<​​​​input​​ ​​type​​​​=​​​​'hidden'​​ ​​name​​​​=​​​​'test'​​ ​​value​​​​=​​​​'value'​​​​>​


​</​​​​form​​​​>​


​<​​​​a​​ ​​href​​​​=​​​​'/up_test.php'​​​​>back</​​​​a​​​​>​


​</​​​​body​​​​>​


​</​​​​html​​​​>​


 

从以上两段代中我们可以看出我试使用/upload_waynerqiu?who=abc&she=def 将who=abc&she=def传递到 后台nginx回调程序 up_test.php中, 这个过程中我使用了nginx变量 $args(​​更多nginx变量请看这里:http://waynerqiu.com/7/138.html​​)。

 

经过测试之后发现参数可以完美的传递来了! 


 

上图中红线部分即为使用nginx_upload_module传递过来的参数!