php - 上传某些文件时 $_FILES 和 $_POST 数据为空

标签 php html multipartform-data

我注意到,根据我正在上传的视频,有时整个 $_POST$_FILES 数组将为空。这是一个奇怪的现象,但我在一些视频中发现了它。为了测试,我使用的视频都是 video/mp4 文件类型。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<?php 
    var_dump($_POST);
    var_dump($_FILES);
?>
<form method="post" action="" enctype="multipart/form-data">

    <input type="file" name="attachment">
    <input type="text" name="other">
    <button type="submit" class="save" value="Save Changes">Upload that file!</button>
</form>

</body>
</html>

一个好的视频的输出是

Array
(
    [other] => testing string
)
Array
(
    [attachment] => Array
        (
            [name] => Shasta.mp4
            [type] => video/mp4
            [tmp_name] => /private/var/tmp/phpAoDLKi
            [error] => 0
            [size] => 4688949
        )

)

当一个错误的请求显示如下

Array
(
)
Array
(
)

我已经修改了我的 php.ini 以允许文件上传到 50mb 的大小,我正在测试的文件是 4.7mb 和 10.2mb。我完全不知道原因是什么,视频文件名为 Shasta.mp4(好文件)和 Bulova_Watches.mp4(坏文件)。

如果需要,我可以将文件上传到网站供其他人测试。

最佳答案

您遇到的问题是因为 post_max_sizephp.ini 中默认设置为 8M。 由于您的文件是 10.4MB,您会遇到以下错误:

POST Content-Length of 10237675 bytes exceeds the limit of 8388608 bytes in Unknown

因为您已达到该限制。 解决此问题的技巧是通过更改值来简单地提高该限制。您可以直接在 php.ini 文件中将其更改为您想要的任何值,即 20M。

或者您可以通过您的 .htaccess 文件设置它:

php_value post_max_size 20M
php_value upload_max_filesize 20M

注意:我还添加了较大文件所需的 upload_max_filesize:)

关于php - 上传某些文件时 $_FILES 和 $_POST 数据为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29836496/

相关文章:

php - Firefox 检测到服务器正在以永远无法完成的方式重定向对此地址的请求

php - SQL命令有问题吗?

javascript - 如何在 php 中复制并粘贴图像

html - CSS 类命名 - 名称中是否包含上下文?

javascript - 令人困惑的 CSS,谁能解释一下

javascript - 无法使用 fetch 发送多部分,但 axios 工作正常

java - 将文本数据传递到 jsp 页面,其中包含多部分数据

javascript - 从JS发送数据到Controller中的函数,并从函数中获取结果

javascript - 使用 twitter bootstrap 删除 ul 缩进

java - javascript 中的多部分表单数据与使用 FileUpload 的 java 服务器