博客列表 >12月9日作业 - PHP的文件上传操作

12月9日作业 - PHP的文件上传操作

SmileHoHo
SmileHoHo原创
2019年12月10日 14:21:491021浏览

a

请求类型必须是POST, 数据编码类型必须是: 复合表单数据,让服务器知道上传的是文件

隐藏域:限制上传文件大小, 不超过php.ini: upload_max_filesize

有关上面的 HTML 表单的一些注意项列举如下:

<form>标签的 enctype 属性规定了在提交表单时要使用哪种内容类型。在表单需要二进制数据时,比如文件内容,请使用 multipart/form-data
<input> 标签的 type="file"属性规定了应该把输入作为文件来处理。举例来说,当在浏览器中预览时,会看到输入框旁边有一个浏览按钮。

Form表单

  1. <form action="demo1.php" method="post" enctype="multipart/form-data">
  2. <input type="file" name="my_file" id="">
  3. <input type="hidden" name="MAX_FILE_SIZE" value="3145728">
  4. <button>上传</button>
  5. </form>

文件上传

$_FILES 数组内容如下:

$_FILES['my_File']['name'] 客户端文件的原名称。

$_FILES['my_File']['type'] 文件的 MIME 类型,需要浏览器提供该信息的支持,例如”image/gif”。

$_FILES['my_File']['tmp_name'] 文件被上传后在服务端储存的临时文件名

$_FILES['my_file']['error'] 判断上传是否成功、错误类型

  1. // 后端PHP主要使用超全局变量: $_FILES 来处理上传的文件
  2. if (!isset($_FILES['my_file'])) {
  3. echo ' 没有文件被上传';
  4. exit;
  5. }
  6. // 1. 配置上传参数
  7. // 设置允许上传的文件类型
  8. $fileType = ['jpg', 'jpeg', 'png', 'gif'];
  9. // 设置允许上传的最大文件长度
  10. $fileSize = 3145728;
  11. // 上传到服务器上指定的目录
  12. $filePath = '/uploads/';
  13. // 上传的原始文件名
  14. $fileName = $_FILES['my_file']['name'];
  15. // 上传保存在服务器上的临时文件名
  16. $tempFile = $_FILES['my_file']['tmp_name'];
  17. // 3. 判断上传是否成功?
  18. // 主要是通过$_FILES['my_file']['error']值, 等于0成或,大于1出错,出错类型用switch分析
  19. $uploadError = $_FILES['my_file']['error'];
  20. if ($uploadError > 0) {
  21. switch ($uploadError) {
  22. case 1:
  23. case 2: die('上传文件不允许超过3M');
  24. case 3: die('上传文件不完整');
  25. case 4: die('没有文件被上传');
  26. default: die('未知错误');
  27. }
  28. }
  29. // 3. 判断文件扩展名是否正确?
  30. $extension = explode('.',$fileName)[1];
  31. if (!in_array($extension, $fileType)) {
  32. die('不允许上传' . $extension . '文件类型');
  33. }
  34. // 4. 为了防止同名文件相互覆盖, 应该将上传到指定目录的文件重命名,例如用md5+时间戳
  35. $fileName = date('YmdHis',time()).md5(mt_rand(1,99)) . '.' . $extension;
  36. // 5. 判断文件是否上传成功?
  37. if (is_uploaded_file($tempFile)) {
  38. if (move_uploaded_file($tempFile, __DIR__ . $filePath.$fileName)) {
  39. // 提示用户上成功
  40. echo '上传成功';
  41. } else {
  42. die('文件无法移动到指定目录,请检查目录权限');
  43. }
  44. } else {
  45. die('非法操作');
  46. }
  47. exit();
  48. `

手抄:


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