本教程我们将学习如何用PHP将文件上载到web服务器。我们的例子将把图片上传到web服务器并在网页上显示。
首先,要将文件上传到服务器,需要一个文件上传表单。除了action和method属性外,文件上传表单还必须具有enctype属性,其值为multipart/form-data:
action
method
enctype
multipart/form-data
<
form
=
"index.php"
"post"
"multipart/form-data"
></
>
enctype属性允许将表单数据编码为多部分MIME数据,这是将二进制数据上传到web服务器所必需的。
然后,在上传文件表单中,还需要有一个file select的控件,以便用户可以从他们的计算机中选择要上传到服务器的文件。在一个表单中,可以有多个文件选择按钮。
file select
下面的例子将展示了如何创建一个文件选择按钮:
input
type
"file"
name
"pictureFile"
请注意,我们在input元素中使用的是type="file"。
type="file"
所以PHP上传文件到服务器的表单如下:
<!DOCTYPE html>
<html>
<head>
<title>PHP File Upload</title>
</head>
<body>
<form action=
method=
enctype=
>
<label
for
>Select a picture</label>
<input type=
name=
</form>
</body>
</html>
可以使用$_FILES超全局数组访问上传文件的信息。
下面的例子展示了如何使用文件字段名pictureFile来访问上传的文件:
$_FILES
[
'pictureFile'
]
这个数组元素本身也是一个关联数组,它包含了上传文件的各种信息,如下所述:
name:上传文件的名称type:上传文件的MIME类型,例如:jpeg图像是image/jpeg,pdf文件的是application/pdf。size:上传文件的大小,以字节为单位tmp_name:上传文件存储在web服务器的临时文件夹中的完整路径。error:描述文件上传状态的错误代码,例如UPLOAD_ERR_OK表示文件上传成功。
例如,要访问上传文件的文件名,可以使用以下代码片段:
$filename
][
'name'
];
PHP允许您通过PHP.ini文件中的upload_max_filesize配置限制上传文件的大小。默认的upload_max_filesize通常是2mb。要上传更大的文件,你需要调整这个配置。
PHP.ini
当文件被成功上传到web服务器时,它被存储在一个临时文件夹中。通常,还需要使用move_uploaded_file()函数将文件从临时文件夹移动到特定文件夹。
下面的示例将完整展示如何将JPEG照片上传到服务器并显示它。
首先,我们创建一个函数来显示文件上传表单:
/**
* 显示文件上传表单
*/
function
display_form(){
?>
<form action=
<label
>Select a picture</label>
<input type=
> <br/>
"submit"
value=
"Upload"
/>
</form>
<?php
}
然后我们创建一个函数来处理上传的文件。
代码如下:
// 定义存储图片文件的目录
define(
'PICTURE_FOLDER'
,
'images/'
);
display_form() {
>请选择一张图片</label>
> <br />
"上传"
* 显示由$file参数指定的图片
* @param string $file 要显示的图片文件
display_picture(
$file
) {
echo
sprintf(
'<img src="%s">'
'<br>'
;
// 上传表单的链接
'<a href="index.php">上传另一个文件</a>'
* 处理文件上传
process_file() {
if
(isset(
$_POST
'submit'
])) {
$error
'error'
]) &&
== UPLOAD_ERR_OK) {
(
'type'
] !=
'image/jpeg'
$new_file
= PICTURE_FOLDER .
(move_uploaded_file(
'tmp_name'
],
)) {
else
{
'移动文件时出错'
'请上传一个JPEG文件'
switch
case
UPLOAD_ERR_INI_SIZE:
$max_size
ini_get
'upload_max_filesize'
$err_msg
= sprinf(
'图片文件大于 %f MB 无法上传.'
break
UPLOAD_ERR_NO_FILE:
'没有上传任何文件。请选择要上传的文件'
default
:
'上传文件时出错'
display_form();
<!DOCTYPE html>
<html>
<head>
<title>PHP 文件上传</title>
</head>
<body>
process_file();
</body>
</html>
此外,我们还需要在web根目录下创建一个名为images/的文件夹,并使其可写。
原文链接:https://codingdict.com/