PHP文件上传

先写好HTML

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <form action="save_img.php" enctype="multipart/form-data" method="post">
        <input type="hidden" name="MAX_FILE_SIZE" value="100000">
        <label for="img">上传图片: </label>
        <input type="file" id="img" name="userImg">
        <input type="submit" value="上传">
    </form>
</body>
</html>

注意<form>enctype必须为multipart/form-data,这样才能文件上传。<input type="hidden" name="MAX_FILE_SIZE" value="100000">指定文件上传的大小。现在看一下save_img.php文件

if($_FILES['userImg']['error'] > 0) {
    echo 'File upload failed, error code = '.$_FILES['userImg']['error'];
    exit;
}

echo "file type: ".$_FILES['userImg']['type'].'<br/>';

$path = $_SERVER['DOCUMENT_ROOT'].'/../test/';
$newFile = $path.$_FILES['userImg']['name'];
if(file_exists($newFile)) {
    echo 'file is exist, upload failed;';
    exit;
}
if(is_uploaded_file($_FILES['userImg']['tmp_name'])) {
    if(!move_uploaded_file($_FILES['userImg']['tmp_name'], $newFile)) {
        echo 'Could not move file to new path! You may not have permission;';
        exit;
    }
} else {
    echo 'Failed;';
    exit;
}

PHP代码中,文件相关的数据保存在$_FILES超级全局数组中。
对于HTML中的<input type="file" id="img" name="userImg">,我们可以再PHP中使用$_FILES['userImg']['xxx']来获取该文件的信息(xxx自己填写)。
1. $_FILES['userImg']['tmp_name']表示文件在web服务器中的临时位置(脚本运行结束时该文件会被删除)。
2. $_FILES['userImg']['name']表示文件的名称。
3. $_FILES['userImg']['size']表示文件的字节大小。
4. $_FILES['userImg']['type']表示文件的MIME类型。
5. $_FILES['userImg']['error']表示任何与文件上传相关的错误代码。
相关错误代码 =>

  • UPLOAD_ERROR_OK 值为0,表示没有发生错误。
  • UPLOAD_ERR_INI_SIZE值为1,表示上传文件大小超出了约定值。文件最大值在php.iniupload_max_filesize中指定。
  • UPLOAD_ERR_FORM_SIZE值为2,表示上传文件的大小超过了HTML表单的MAX_FILE_SIZE所指定的最大值。
  • UPLOAD_ERR_PARTIAL值为3,表示文件只部分上传。
  • UPLOAD_ERR_NO_FILE值为4,表示没有上传任何文件。
  • UPLOAD_NO_TMP_DIR值为6,表示在php.ini文件中没有指定临时文件目录。
  • UPLOAD_ERR_CANT_WRITE值为7,表示将文件写入磁盘失败

    现在继续分析php代码,$_FILES['userImg']['error'] > 0判断文件是否上传成功;$_SERVER['DOCUMENT_ROOT']获得服务器的根目录;$newFile = $path.$_FILES['userImg']['name'];给定文件最后存放的指定位置;file_exists($newFile)判断文件是否已经存在;
    is_uploaded_file($_FILES['userImg']['tmp_name'])判断该文件是否为上传文件(有可能恶意上传的文件会导致访问不该访问的地方);move_uploaded_file($_FILES['userImg']['tmp_name'], $newFile)将临时文件移动到指定位置。

    注意: linux下,用户应该有访问存放目录的权限,可以设置其为777权限;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件上传是网站开发中常用的功能之一,PHP文件上传类可以帮助我们实现文件上传功能。当用户需要上传文件时,可以使用PHP文件上传类来处理文件上传的逻辑。PHP文件上传类可以实现对上传文件的各种验证,例如文件类型、大小、保存路径等。通过使用PHP文件上传类,可以让文件上传变得更加安全、简单和高效。 PHP文件上传类可以通过封装上传文件的函数来实现文件的上传和下载。上传文件的功能通过对文件的验证和处理,将文件保存到服务器指定的位置。而下载文件的功能通过设置文件的下载头信息,实现对指定文件的下载操作。PHP文件上传类还可以处理文件重名、文件大小限制、文件类型限制等问题,保证文件上传过程中的安全性和完整性。 在使用PHP文件上传类的过程中,需要注意对上传文件的安全性进行严格的检查,避免出现恶意文件上传或者文件被非法下载的情况。同时,需要确保服务器环境对文件上传和下载的操作进行了正确的配置,以确保文件上传和下载功能的正常运行。 总的来说,PHP文件上传类可以极大地方便我们在网站开发中对文件的上传和下载操作,帮助我们完成文件处理的各种功能。无论是图片、文档还是音视频文件,PHP文件上传类都可以帮助我们完成文件上传和下载功能,为网站的用户提供更好的使用体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值