使用PHP实现图片上传接口的实例代码

科技   2024-12-22 07:00   湖南  

 

以下是一个使用PHP实现图片上传接口的基础实例代码:

HTML 页面(index.html)

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
</head>
<body>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <input type="file" name="image" id="image" />
        <input type="submit" value="上传图片" />
    </form>
</body>
</html>

PHP 后端代码(upload.php)

<?php
// 设置允许上传的图片文件扩展名
$allowedextensions = array('jpg''jpeg''png''gif');
// 获取上传的文件信息
$file = $_FILES['image'];
// 检查是否有文件被上传
if ($file['error'] === UPLOAD_ERR_OK) {
    // 获取文件的原始名称
    $filename = $file['name'];
    // 获取文件的临时存储路径
    $filetmpname = $file['tmp_name'];
    // 获取文件的大小(单位:字节)
    $filesize = $file['size'];
    // 获取文件的扩展名
    $fileextension = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
    // 验证文件扩展名是否在允许的范围内
    if (in_array($fileextension$allowedextensions)) {
        // 自定义保存图片的目录(确保该目录有写入权限,可根据实际情况修改)
        $uploaddir = 'uploads/';
        // 生成唯一的文件名,避免文件名冲突,这里使用时间戳和原文件名组合
        $newfilename = time(). '_'$filename;
        // 拼接完整的保存路径
        $destination = $uploaddir$newfilename;
        // 尝试移动文件到指定目录
        if (move_uploaded_file($filetmpname$destination)) {
            // 上传成功,返回成功信息给客户端(这里简单以json格式返回,实际可根据需求调整)
            $response = array(
                'status' => 'success',
                'message' => '图片上传成功',
                'file_path' => $destination
            );
            header('content-type: application/json');
            echo json_encode($response);
        } else {
            // 文件移动失败,可能是权限等问题
            $response = array(
                'status' => 'failure',
                'message' => '图片上传失败,文件移动出现问题'
            );
            header('content-type: application/json');
            echo json_encode($response);
        }
    } else {
        // 文件扩展名不被允许,返回错误信息
        $response = array(
            'status' => 'failure',
            'message' => '不允许的文件扩展名,请上传指定格式的图片'
        );
        header('content-type: application/json');
        echo json_encode($response);
    }
else {
    // 根据不同的上传错误码返回相应的错误信息
    switch ($file['error']) {
        case UPLOAD_ERR_INI_SIZE:
            $message = '上传的文件超过了服务器配置的最大文件大小';
            break;
        case UPLOAD_ERR_FORM_SIZE:
            $message = '上传的文件超过了表单设置的最大文件大小';
            break;
        case UPLOAD_ERR_PARTIAL:
            $message = '文件只上传了一部分';
            break;
        default:
            $message = '未知的上传错误';
            break;
    }
    $response = array(
        'status' => 'failure',
        'message' => $message
    );
    header('content-type: application/json');
    echo json_encode($response);
}
?>

这段代码首先定义了允许上传的图片文件扩展名,然后获取上传文件的信息,进行一系列验证,包括文件是否上传成功、扩展名是否符合要求等,最后根据验证结果将文件移动到指定目录并返回相应的信息给客户端.


精英博客探索
关注热点,传递正能量。
 最新文章