本篇文章主要介绍使用 PHP 上传文件

博主博客

文件目录

upload.php

<?php
/**
 * User: [email protected]
 * Date: 2016/6/11
 * Time: 0:33
 */
header("Content-type: text/html; charset=utf-8");
define("NL", "<br />\n");

$path = "upload/";

// 接收 GET 参数中的 tokenId
if (!empty($_GET) && isset($_GET["tokenId"])) {
    printf("tokenId=%s%s", $_GET["tokenId"], NL);
}
// 接收 POST 参数中的 data
if (!empty($_POST) && isset($_POST["data"])) {
    printf("data=%s%s", $_POST["data"], NL);
}


// 服务器限制文件大小, 所以接收到大文件有可能为空
if (!isset($_FILES["uploadFile"])) {
    die("文件为空!");
}

if ($_FILES["uploadFile"]["error"] > 0) {
    die("错误代码:" . $_FILES["uploadFile"]["error"] . NL);
} else {
    printf("文件名:\t%s%s文件类型:\t%s%s文件大小:\t%sKB%s临时文件绝对路径:\t%s%s",
        $_FILES["uploadFile"]["name"], NL,
        $_FILES["uploadFile"]["type"], NL,
        ($_FILES["uploadFile"]["size"] / 1024), NL,
        $_FILES["uploadFile"]["tmp_name"], NL);
}
// 上传限制(image/jpeg 为jpg图片, text/plain为txt文本, 还能使用size限制大小)
if (($_FILES["uploadFile"]["type"] == "image/jpeg")
|| $_FILES["uploadFile"]["type"] == "text/plain") {
    if (file_exists($path . $_FILES["uploadFile"]["name"])) {
        die($_FILES["uploadFile"]["name"] . "已经存在!");
    } else {
        // 如果 upload 文件夹不存在就创建
        if (!file_exists($path)) mkdir($path);
        // 把临时文件移到该文件目录, 并且重命名, 使用iconv防止上传中文文件出现中文乱码
        move_uploaded_file($_FILES["uploadFile"]["tmp_name"], $path . iconv("UTF-8", "gb2312", $_FILES["uploadFile"]["name"]));
        printf("%s上传完成!", $_FILES["uploadFile"]["name"]);
    }
} else {
    die("不支持上传该文件!");
}

up.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>上传文件</title>
</head>
<body>
    <form action="upload.php?tokenId=abc" method="post" enctype="multipart/form-data" >
        <input type="file" name="uploadFile" id="uploadFile" />
        <input type="text" name="data" id="data" value="This is data!" />
        <input type="submit" value="提交" />
    </form>
</body>
</html>