PHP如何通过表单直接提交大文件详解

yizhihongxing

当我们需要上传大文件时,常常会遇到上传失败,上传慢等问题,这时我们就可以通过表单直接提交大文件的方式来解决。

以下是PHP通过表单直接提交大文件的详细攻略:

  1. 修改php.ini配置文件

在服务器上找到php.ini文件,然后找到以下几个参数并修改:

upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_time = 300
memory_limit = 128M

其中,upload_max_filesize和post_max_size分别指上传文件和表单数据的最大大小,这里设为64M;max_execution_time和max_input_time分别指PHP脚本执行的最大时间和脚本输入的最大时间,这里设为300秒;memory_limit指定脚本使用的最大内存,这里设为128M。

  1. 编写HTML表单
<form action="upload.php" method="post" enctype="multipart/form-data">
  <label for="file">选择文件:</label>
  <input type="file" name="file" id="file"><br>
  <input type="submit" name="submit" value="上传">
</form>

enctype="multipart/form-data"指定了表单数据的编码方式,可以支持上传文件。

  1. 编写PHP上传脚本
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
  if (isset($_FILES['file']) && $_FILES['file']['error'] == UPLOAD_ERR_OK) {
    $temp_name = $_FILES['file']['tmp_name'];
    $new_name = 'uploads/' . $_FILES['file']['name'];
    move_uploaded_file($temp_name, $new_name);
    echo "上传成功";
  } else {
    echo "上传失败";
  }
}
?>

首先判断是否是POST请求,并且判断是否有文件上传,并且上传是否成功。成功就将上传的文件移动到指定目录,失败则输出错误信息。

  1. 示例说明

示例1

假设我们要上传一个大小为100M的图片文件,我们可以按照以上步骤修改配置文件、编写HTML表单和PHP上传脚本,然后将该图片文件选择后点击上传按钮。上传完成后,可以在指定的uploads目录下看到我们刚才上传的图片文件,同时也会输出上传成功的提示信息。

示例2

为了更好地说明表单直接提交大文件的过程,我们可以使用PHP的官方示例代码来上传大文件。

首先下载示例代码:

git clone https://github.com/thinkphp/file-upload.git

然后修改config.php文件,改为以下内容:

return [
    // 允许上传的后缀
    'ext' => 'jpg,png,gif,jpeg',
    // 允许上传的大小,单位M
    'size' => 100,
    // 默认分片大小,单位KB
    'chunk_size' => 102400,
    // 默认上传并发数
    'concurrent' => 3,
    // 临时目录
    'temp_path' => 'temp/',
    // 上传目录
    'save_path' => 'uploads/',
];

这里设置允许上传的后缀为jpg、png、gif、jpeg,允许上传的大小为100M,上传时分片大小为100M,上传并发数为3,临时目录为temp/,上传目录为uploads/。

然后打开文件index.php,修改form表单中的Action,改为:

<form id="uploadForm" action="server.php" method="post" enctype="multipart/form-data" onsubmit="return false;">

这里把文件上传的Action改为server.php,这个文件就是上传处理的PHP文件。

最后打开命令行,进入到file-upload目录,执行以下命令:

php -S localhost:8888

使用浏览器访问 http://localhost:8888/index.php ,就可以看到示例代码了。

在示例代码中,我们可以上传大于2G的文件,上传过程中会分片上传,并且支持断点上传,如果上传失败会自动重试,详见示例代码。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP如何通过表单直接提交大文件详解 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • PHP获取MAC地址的函数代码

    获取MAC地址是网络编程中常用的操作之一,PHP可以通过获取计算机本地的网卡MAC地址来实现相关操作,以下是完整攻略: 1. 获取当前主机所有MAC地址 PHP通过执行操作系统的命令来获取当前主机上网卡的MAC地址。在Windows系统上,使用ipconfig /all命令可以列出当前主机上所有的网络适配器信息,包括MAC地址。在Linux系统上,使用ifc…

    PHP 2023年5月24日
    00
  • 微信小程序结合ThinkPHP5授权登陆后获取手机号

    下面给出详细的攻略,分为以下几个步骤: 获取微信小程序用户的授权信息。 发送授权凭证code到后端服务器,获取session_key和openid。 利用session_key和encryptedData解密用户敏感数据(如手机号等)。 步骤一:获取微信小程序用户的授权信息 在小程序端,可以通过wx.login函数获取用户授权凭证code,示例代码如下: w…

    PHP 2023年5月23日
    00
  • php7连接MySQL实现简易查询程序的方法

    下面是详细的攻略: PHP7连接MySQL实现简易查询程序 前置条件 在开始编写PHP7连接MySQL实现简易查询程序之前,需要先确保以下条件: 已经安装了PHP7和MySQL数据库 确认已经能够通过PHP连接MySQL 连接MySQL 首先,需要在PHP中建立与MySQL数据库的连接。这可以通过使用 mysqli_connect() 函数来实现。 <…

    PHP 2023年5月30日
    00
  • php写入、删除与复制文件的方法

    下面我就介绍一下PHP写入、删除和复制文件的方法。 PHP写入文件的方法 在PHP中,写入文件的主要函数是file_put_contents()。这个函数接收两个参数:要写入的文件名和要写入的内容。如果文件不存在,则会自动创建文件。如果文件已经存在,则会覆盖原有内容。 下面是一个简单的例子,演示如何使用file_put_contents()方法将数据写入到”…

    PHP 2023年5月26日
    00
  • PHP 实现多服务器共享 SESSION 数据

    要实现多服务器共享 SESSION 数据,需要使用第三方存储来存储 SESSION 数据,例如使用 Redis、Memcached 等缓存技术或者使用数据库存储的方式来解决。 下面以使用 Redis 存储 SESSION 数据为例,详细介绍如何实现多服务器共享 SESSION 数据的攻略。 安装 Redis 首先需要安装 Redis,可以从 Redis 官网…

    PHP 2023年5月27日
    00
  • golang recover函数使用中的一些坑解析

    下面是“golang recover函数使用中的一些坑解析”的完整使用攻略,包括函数描述、函数分析、函数使用和两个示例。 函数描述 在Go语言中,recover()函数用从panic()函数引起的panic中复。recover()函数必须在defer语句中用,否则无法正常工作。recover()函数语法如下: func recover(){} 函数分析 在G…

    PHP 2023年5月12日
    00
  • Linux系统下php获得系统分区信息的方法

    在Linux系统上,可以使用以下方法获得系统分区信息: 使用df命令 df命令可以列出文件系统的磁盘使用情况,通过解析df的输出信息,可以获得系统分区信息。 使用命令: df -h 可以列出系统中所有分区的信息(包括挂载路径、总容量、已用空间、剩余空间等)。 在php中,可以使用exec函数执行该命令,例如: <?php $result = array…

    PHP 2023年5月24日
    00
  • security.js实现的RSA加密功能示例

    下面是“security.js实现的RSA加密功能示例”的完整攻略。 1. 安装security.js 首先需要安装security.js,它是一个纯JavaScript库,可以在浏览器和Node.js环境下使用。 在浏览器环境下,可以通过script标签引入: <script src="https://cdn.bootcdn.net/aja…

    PHP 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部