PHP文件上传

    xiaoxiao2021-03-26  22

    先写好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.ini的upload_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权限;

    转载请注明原文地址: https://ju.6miu.com/read-661183.html

    最新回复(0)