添加新输入类型“file”后,$ _POST变为空

时间:2010-03-16 18:47:25

标签: php file-upload

我找不到理解和解决这个问题的方法,而且我做了很多。

我有一个脚本,希望是一个简单的表单,通过POST发送文件。第二个文件,处理信息。

默认情况下,我向用户提供了一些字段,其中一个字段是“file”类型的输入字段,还有一些“隐藏”字段,这些字段为我提供了在POST上使用的值。

我发现,当添加类型为“file”的新输入时,$ _POST返回数组0,即使$ _FILES也不返回任何内容。我不知道如何解决这个问题,并且在保留“文件”类型的默认输入框时它可以正常工作。

<form id="formulario" enctype="multipart/form-data" action="projectos_processar.php" method="POST">

    Modo inserir projecto item!<br/><br/>
    <label>Imagem de apresentacao: </label>

    <input id="img_p_child" type="file" name="img_p_child" cols="100" value="" class="validate['required','image']" /><br/>

    <br/>
    <br/>

    <input type="file" id="video" name="video" class="validate['required','video']" cols="100">

    <br/>                       
    <br/>
    <hr>
    Publicar o item ? <br/>
    <br/>
    <br/>                       

    Sim <input type="radio" name="published" value="1"><br>
    Nao <input type="radio" name="published" value="0" checked="true"><br>

    <hr>

    <!-- INICIO:: CAMPOS EM MODO HIDDEN -->
    <input type="hidden" value="center" name="crop_X_Y" />
    <input  type="hidden" value="assets/publicidade/FURIOUS01/" name="stringDirPagina" />
    <input  type="hidden" value="128" name="parent_id" />
    <input  type="hidden" value="projectos_item" name="pagina_id"/>
    <input  type="hidden" value="inserir" name="tarefa" />
    <!-- FIM:: CAMPOS EM MODO HIDDEN -->

    <br/>
    <input type="submit" value="Enviar" />
</form>

这只发生在:

<input type="file" id="video" name="video" class="validate['required','video']" cols="100">

存在!

var_dump( $_POST )$_FILESprint_r()等不返回任何内容。我已经试图在类型“文件”的输入上创建一个数组,比如img_p_child[],但没有。

如何解决这个问题?

感谢您抽出宝贵时间!


我忘了提到这一点,我现在想知道在第二个输入字段中发送图像文件并且有效,但不能使用.FLV文件。所以我怀疑有一个最大的权限,我需要在php.ini上更改,如果是这样,我很抱歉! :X

1 个答案:

答案 0 :(得分:6)

取自php.net

  

post_max_size会影响文件上传。要上传大文件,请执行此操作   value必须大于upload_max_filesize。如果内存限制是   由配置脚本启用,memory_limit也会影响文件   上传。一般来说,memory_limit应该大于   的post_max_size。使用整数时,将测量该值   字节。也可以使用速记符号。如果发布数据的大小   大于post_max_size,$ _POST和$ _FILES超全局   是空的。这可以以各种方式跟踪,例如,通过   $ _GET变量处理数据的脚本,即然后检查是否   $ _GET ['processed']已设置。

     

memory_limit设置脚本的最大内存量(以字节为单位)   被允许分配。这有助于防止编写糟糕的脚本   吃掉服务器上所有可用的内存。请注意,没有   内存限制,将此指令设置为-1。

话虽如此,你需要更改php.ini中的一些内容以允许更大的上传:

upload_max_filesize = 10M;
post_max_size = 20M;
memory_limit = 18M; 

将以下内容添加到根目录中的.htaccess文件中。

php_value upload_max_filesize 10M
php_value post_max_size 20M
php_value memory_limit 18M 

显然,这些尺寸会根据您的需求而有所不同。关于增加上传大小的Here is a nice article