今天,遇到一个服务端接收客户端上传图片的需求,经过学习。我写了个简单的demo
以备下次学习。
首先服务器接收的发送图片的请求一定要是post请求,而且请求一定要加上 enctype="multipart/form-data" 缺一不可
下面是例子,写个简单的浏览器端的:
<html> <head> <title> Upload file example. </title> </head> <body> <form method="post" action="recpic.php" enctype="multipart/form-data"> <table border=0 cellspacing=0 cellpadding=0 align=center width="100%"> <tr> <td width=55 height=20 align="center"><input type="hidden" name="MAX_FILE_SIZE" value="2000000">文件: </TD> <td height="16"> <input name="file" type="file" /> <!--这里指定了上传后所在临时数组的名称--> <input type="submit" name="submit" value="Submit" /> </td> </tr> </table> </form> </body> </html>
<?php /** * 接收上传的图片 * * ------------ * 200 ok * 401 Error method * 500 Internal error * ------------ */ require_once("../inc/connect_db.php"); require_once("../response.php"); header('Access-Control-Allow-Origin: *'); // 解决前段javascript跨域请求 //print_r($_FILES); $filename = $_FILES['file']['name']; $tmp_name = $_FILES['file']['tmp_name']; //将服务器上的临时文件移动到指定目录下 //使用该方法move_uploaded_file($tmp_name , $destination) move_uploaded_file($tmp_name , "../files/".$filename); echo $filename; exit();
上文有注释不赘述,这里还搜集了一些关于上传文件$_FILES()的重要方法:
$_FILES['myFile']['name'] 显示客户端文件的原名称。 $_FILES['myFile']['type'] 文件的 MIME 类型,例如"image/gif"。 $_FILES['myFile']['size'] 已上传文件的大小,单位为字节。 $_FILES['myFile']['tmp_name'] 储存的临时文件名,一般是系统默认。 $_FILES['myFile']['error'] 该文件上传相关的错误代码。以下为不同代码代表的意思: 0; 文件上传成功。 1; 超过了文件大小php.ini中即系统设定的大小。 2; 超过了文件大小MAX_FILE_SIZE 选项指定的值。 3; 文件只有部分被上传。 4; 没有文件被上传。 5; 上传文件大小为0。