⽂件上传的⼏种⽅法
当我们想把⽂件上传到web服务器上时,通常有如下⼏种⽅法:
⽅法1、html(form)+nginx(⽂件上传模块)+php:这种⽅式最复杂。⼀般不⽤。实现过程说明如下:
步骤⼀:form中,action=“/upload”. 指定⼀个⽬录,⽽不是⼀个⽂件。method都是POST.
步骤⼆:在nginx中,安装⽂件上传模块进⾏编译安装。然后配置⽂件中,对/upload访问⽬录进⾏配置。指定相关参数。并指定后端处理⽂件上传的php⽂件。经过nginx转⼿,后端php获取的参数就是nginx传递的,不是前端form过来的。
步骤三:后端php⽂件对传递过来的⽂件信息进⾏处理。需要配置php.ini,允许上传⽂件。
以上实现的⽅法,在之前的html备份⽂件中存在。可以到(html201908221746)。nginx的备份⽂件:f201908242138。
⽅法2、html(form)+nginx+php:这种⽅式常见,配置⽐较简单。
步骤⼀:form中,action=“/test.php”. 指定后端php⽂件,method都是POST.
步骤⼆:nginx只做为web服务存在
步骤三:php.ini中启⽤⽂件上传,指定⽂件临时存储路径等等。
步骤四:php⽂件处理前端传递过来的上传⽂件。
⽐如:
html:
<form enctype="multipart/form-data" action="test.php" method="post">
选择⽂件:<input type="file" name="file" > <br>
<input type="submit" value="上传">
php:
$uploaddir = '/tmp/test/' ;
$uploadfile = $uploaddir.basename ( $_FILES [ 'file' ][ 'name' ]);
if ( move_uploaded_file ( $_FILES [ 'file' ][ 'tmp_name' ], $uploadfile )) {
echo "File is valid, and was successfully uploaded.\n" ;
} else {
echo "Possible file upload attack!\n" ;
}
echo 'Here is some more debugging info:' ;
注意:curl的file关键字和php中的$_FILES [ 'file' ][ 'tmp_name' ]中的file关键字对应。其实等同于form的input的name。
⽅法4、html(form)+js+nginx+php:这种⽅式体验更好。前端上传⽂件时,不需要刷新页⾯,也不需要重新打开⼀个新的窗⼝。在当前窗⼝即可提⽰上传⽂件结果。
其中⽅法4和其他⽅式的不同点是客户端不同,前⾯3种⽅法都是通过web 浏览器提交⽂件上传。需要交互操作。⽽⽅法4,就通过通过脚本实现上传。可以解决不少问题。
nginx 配置文件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论