博客列表 >文件上传-4月19日作业

文件上传-4月19日作业

日薪月e的博客
日薪月e的博客原创
2018年04月24日 19:54:34763浏览

本次作业内容为PHP实现文件上传过程。

实例

<meta charset="utf-8">



<!--

1.文件上传的请求类型必须是POST

2.允许的数据类型必须是:multipart/form-data



如果想在当前页面处理上传的话,action有三种写法:

1.最懒的方式:空,默认为当前脚本。

<form action="" method="post" enctype="multipart/form-data">

2.最死的方法:当前脚本名。

<form action="0419hw.php" method="post" enctype="multipart/form-data"

3.最酷的方法:如下例写法。

-->

<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>" method="post" enctype="multipart/form-data">

<!-- 创建隐藏域 -->

<input type="hidden" name="MAX_FILE_SIZE" value='542488'>

<fieldset>

<legend align="center">文件上传</legend>

<p><strong>选择文件:</strong><input type="file" name="upload"></p>

<p align="center"><button type="submit" name="submit">上传</button></p>

</fieldset>



</form>



<?php 

//$_FILES:它是一个二维数组。

//$_FILES['当前上传文件的控件名称,input[name="upload"]']



// $_FILES['upload']['name'] :文件原始名称

// $_FILES['upload']['type'] :文件类型

// $_FILES['upload']['sizi'] :文件大小

// $_FILES['upload']['tmp_name'] :服务器上的临时文件夹

// $_FILES['upload']['error'] :错误代码



if ($_SERVER['REQUEST_METHOD'] == 'POST') {



//1.判断是否有文件被上传

if (isset($_FILES['upload'])) {

//2.设置一下允许上传的类型

$allow = ['image/jpg','image/jpeg','image/png'];

//判断上传文件的类型是否符合要求

if (in_array($_FILES['upload']['type'],$allow)) {

//将用户文件上传到指定的临时目录:move_uploaded_file()

if (move_uploaded_file($_FILES['upload']['tmp_name'],"upload/{$_FILES['upload']['name']}")){

//输出上传成功

echo '<script>alert(\'上传成功\')</script>';

} 

}else {

echo '<script>alert(\'只允许上传jpg或png格式的图片文件\')</script>';

} 

}



if ($_FILES['upload']['error'] > 0) {



echo '<p>错误的原因是:<strong>';



switch ($_FILES['upload']['error']) {

case 1:

echo '文件超过了php.ini中的大小';

break;



case 2:

echo '文件超过表单中设置的大小';

break;



case 3:

echo '文件办有一部分被上传了';

break;



case 4:

echo '没有文件被上传';

break;



case 6:

echo '没有可用的临时文件夹';

break;



case 8:

echo '上传意外中止';

break;

default:

echo '未知错误';

break;

}



echo '</strong></p>';

//删除临时目录,系统会在会话结束 自动清空。

if (file_exists($_FILES['upload']['tmp_name']) && is_file($_FILES['upload']['tmp_name'])) {

unlink($_FILES['upload']['tmp_name']);

}

}



}



?>

运行实例 »

点击 "运行实例" 按钮查看在线实例


小结:

1、form中method和enctype要注意

2、在表单中设置的文件大小仅供参考

3、在pnp脚本中要注意:

1)首先要进行请求类型判断,必须是POST,用isset()判断是否有文件上传。

2)注意move_uploaded_file()函数,将上传文件从临时文件夹转移到上传目录。

本次作业没有实现ajax验证,因为没搞懂添加上传按钮的点击事件后,怎么判断文件上传成功,因此先上传基本部分,验证等会做后再补充修改。


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议