HTML的form表单
用html的表单模拟一个文件上传的post请求,代码如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> < html > < head > < meta http-equiv = "Content-Type" content = "text/html; charset=UTF-8" > < title >File Upload</ title > </ head > < body > < form enctype = "multipart/form-data" action = "test.php" method = "POST" > < input type = "hidden" name = "MAX_FILE_SIZE" value = "30000" /> Send this File:< input name = "userfile" type = "file" /> < input type = "submit" value = "Send File" /> </ form > </ body > </ html > |
注意:
要确保文件上传表单的属性是 enctype="multipart/form-data",否则文件上传不了
PHP
首先,需要解释一下PHP的全局变量$_FILES,此数组包含了所有上传的文件信息
-
$_FILE['userfile']['name'] : 客户端机器文件的原名称
-
$_FILE['userfile']['type'] : 文件的MIME类型
-
$_FILE['userfile']['size'] : 已上传的文件大小
-
$_FILE['userfile']['tmpname'] : 文件被上传后在服务器存储的临时文件名
-
$_FILE['userfile']['error'] : 和该文件上传的错误代码
思路
1、生成40位的随机字符串作为文件名
2、根据文件是图片还是语音转存到不同的文件位置
3、暂时不做文件大小和文件类型的校验
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
function processFile( $files , $type ) { $uploadName = null; foreach ( $files as $name => $value ) { $originalName = $value [ 'name' ]; $arr = explode ( "." , $originalName ); $postfix = $arr [ count ( $arr ) - 1]; $tmpPath = $value [ 'tmp_name' ]; $tmpType = $value [ 'type' ]; $tmpSize = $value [ 'size' ]; } $newname = EhlStaticFunction::generateRandomStr(40). "." . $postfix ; switch ( $type ) { case 1 : // 处理声音文件 $destination = VIDEOUPLOADDIR. $newname ; break ; case 2 : // 处理图像文件 $destination = IMAGEUPLOADDIR. $newname ; break ; } move_uploaded_file( $tmpPath , $destination ); } |
而获取所上传文件的后缀名则可以使用一下代码:
HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> < html xmlns = "http://www.w3.org/1999/xhtml" > < head > < meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" /> < title ></ title > < meta name = "keywords" content = " keywords" /> < meta name = "description" content = "description" /> </ head > < body > < form method = "post" action = "" enctype = "multipart/form-data" > < input type = "file" name = "upfile" size = "20" /> < input type = "submit" name = "submit" value = "submit" /> </ form > </ body > </ html > |
PHP
1
2
3
4
5
6
7
|
<?PHP if (isset( $_POST [ 'submit' ])) { $string = strrev ( $_FILES [ 'upfile' ][ 'name' ]); $array = explode ( '.' , $string ); echo $array [0]; } ?> |
结果示例: