当前位置:   article > 正文

使用 PHP 实现简单的图片上传_upload php

upload php
一、HTML 表单准备
<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
  <meta name="Generator" content="EditPlus®">
  <meta name="Author" content="">
  <meta name="Keywords" content="">
  <meta name="Description" content="">
  <title>PHP图片上传</title>
  <style>
	.form-group {
		margin: 20px 0;
	}
  </style>
 </head>
 <body>
	<form method="post" enctype="multipart/form-data" action="upload.php">
		<div class="form-group">
			<label>文件上传</label>
			<input type="file" name="image">
		</div>
		<div class="form-group">
			<input type="submit" name="upload" value="上传">
		</div>
	</form>
 </body>
</html>
  • 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
  • 27

需要注意的是,form表单在提交文件时不同于提交普通的文本,提交文件时需要指定传值方式为POST,并且给form增加一个enctype属性,其值为multipart/form-data,这样表单才会把文件的内容编码到HTML请求中。

这里我们为action属性指定值为upload.php,即将文件提交到upload.php中。

二、PHP 处理上传的文件

第一步,接收文件。

$file = $_FILES['image'];
  • 1

不同于接收普通文本使用$_GET$_POST,接收文件需要使用$_FILES,其中image 对应 form 表单 input 组件中 name 属性的值。

打印接收到的文件,可以看到以下信息:

Array
(
    [name] => 1.png // 原文件名
    [type] => image/png // 文件类型
    [tmp_name] => C:\Windows\php4DA9.tmp // 临时文件位置
    [error] => 0 // 是否有错误,0为正常,具体错误取决于你的PHP配置文件是否限制了文件上传的信息
    [size] => 60814 // 文件大小,单位 kb
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

第二步,取出文件的后缀名。

$ext = strrchr($file['name'], '.');
  • 1

使用strrchr函数检测.在原文件名中最后一次出现的位置,并返回从该位置剩余的所有字符。

输出结果:

.png
  • 1

第三步,为文件重新命名。

$newName = mt_rand(0000, 9999).time().$ext;
  • 1

使用mt_rand函数从0000-9999之间随机生成一个四位数,再连接上当前的时间戳作为新的文件名。

输出结果:

77231619271980.png
  • 1

第四步,将新命名的文件移动到指定的文件夹进行保存。

假设将文件保存至 uploads/images 目录下,那么将保存路径与文件名拼接成一个完整的路径。

$path = 'uploads/images/'.$newName;
$info = move_uploaded_file($file['tmp_name'], $path);
  • 1
  • 2

使用PHPmove_uploaded_file函数将文件移动至指定的位置,该函数需要两个参数,第一个参数为原文件的临时位置,第二个参数为指定的保存位置。

原文件的临时位置在第一步中已经得到,需要保存的位置也已经有了,这时直接查看保存结果即可。

print_r($info);
  • 1

返回 1 ,则为保存成功,其它值则为保存失败。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/745975
推荐阅读
相关标签
  

闽ICP备14008679号