文件未上传到php

Posted

技术标签:

【中文标题】文件未上传到php【英文标题】:file not being uploaded to php 【发布时间】:2016-03-28 07:10:58 【问题描述】:

我正在尝试将文件上传到 wamp 服务器,is_upload_file 对于超过 10mb 的文件返回 false。对于较小的文件,一切正常。

HTML

<button  type = "button" id = "uploadbutton">Click</button>
<form id = "fileupload">
    <input type="file" name = "uploadfile" id = "uploadfile" style="position: fixed; top: -100em; display:none">
</form>

js

var uploadbutton = document.getElementById("uploadbutton");
var uploadFileInput = document.getElementById("uploadfile");

uploadbutton.onclick = function()

    uploadFileInput.click();
;

uploadFileInput.onchange = function()

    onSubmitFile();
;

function onSubmitFile()

    console.log("onsubmitform");
    var fd = new FormData(document.getElementById("fileupload"))

    $.ajax(
        url: "uploadfile.php",
        type: "POST",
        data: fd,
        enctype: 'multipart/form-data',
        processData: false,  
        contentType: false
    ).done(function( data ) 
        alert(data);
    );

PHP

if (is_uploaded_file($_FILES["uploadfile"]["tmp_name"]))

    $name = $_FILES["uploadfile"]["name"];
    move_uploaded_file($_FILES["uploadfile"]["tmp_name"], "C:\\$name");
    echo $_FILES["uploadfile"]["name"];
    echo "File uploaded";

else

    echo "File not uploaded";

print_r($_FILES);

print_r($_FILES)is_uploaded_file 失败时打印一个空数组。

php.ini

upload_max_filesize 64M post_max_size 20M 最大输入时间 300 max_execution_time 300

【问题讨论】:

请参考:sitepoint.com/upload-large-files-in-php 另请注意display : none 在移动设备中可能会给您带来麻烦。如果要隐藏它,请将宽度和高度设置为0px @AmitRajput, is_uploaded_file — Tells whether the file was uploaded via HTTP POST @rahul,如果关注点是IT DOES NOT WORK 会很有帮助,但在这种情况下,它仅在文件很大时才有效。 你在使用 Wampserver 吗? (左键单击)wampmanager 图标 -> PHP -> php.ini 这是您访问它的方式吗?还要检查phpinfo() 【参考方案1】:

请在 php.ini 文件中更新以下变量设置然后尝试。

set_time_limit(0);
ini_set('post_max_size', '50M');
ini_set('upload_max_filesize', '50M');

谢谢

【讨论】:

50 MB 数据至少需要 15 分钟才能上传。最大执行时间呢? 您可以根据自己的要求更新大小限制。 我说的是max_execution_time 但请注意什么是1GB 大的文件?上传需要多长时间? 分块文件上传是在这种情况下要走的路.. @VinodPatidar 我用我的 php.ini 值更新了我的帖子,它们似乎是我上传的文件 是的,亲爱的,如果您的文件大于 1 GB 等,您应该使用分块文件上传。【参考方案2】:

请在 php.ini 文件中更新以下变量设置,然后尝试或在 ini 文件中进行更改并重新启动服务器

ini_set('post_max_size', '50M');
ini_set('upload_max_filesize', '50M');

【讨论】:

【参考方案3】:

更新以下变量设置然后尝试..

ini_set('post_max_size', '50M');
ini_set('upload_max_filesize', '50M');
ini_set('max_execution_time', 1200); // 1200 seconds i.e. 20 minutes

【讨论】:

【参考方案4】:

原来我编辑了错误的 php.ini。 我在 Apache 文件夹中编辑了 ini,一切正常。

【讨论】:

【参考方案5】:

您的表单应如下所示:

   <form action="formprocess.php" id='fileupload' method="post" enctype="multipart/form-data">

【讨论】:

以上是关于文件未上传到php的主要内容,如果未能解决你的问题,请参考以下文章

文件未上传到数据库。验证好吗?

图片未上传到php服务器ios 10 [关闭]

PHP open_basedir配置未包含upload_tmp_dir 导致服务器不能上传文件

文件上传 php $_FILES 未定义索引错误

在文件未上传的 PHP 中尝试 catch 语句

文件上传未通过ajax提交