上传时没有获取文件类型和tmp_name

时间:2014-05-06 11:43:14

标签: php html forms file-upload

我想在同一时间上传图片和pdf,但却出错了。我不知道我错过了什么,图片正在上传,但上传pdf时有问题。 这是一段代码。

<pre>
<?php
if ($_GET["action"] == "submit") {

    $imageType="press_release_image_";
    $ext= substr(basename($_FILES['brwAddNews']['name']),-4);
    $filename=$imageType.$ext; 
    $target_path = $filename;

    $pdfType="press_release_pdf_";
    $pdfext= substr(basename($_FILES['brwAddNewsPdf']['name']),-4);
    $pdffilename=$pdfType.$pdfext; 
    $pdf_target_path = $pdffilename; 
    print_r($_FILES) ;
    $pdfext= substr(basename($_FILES['brwAddNewsPdf']['name']),-4);
    if($pdfext==".pdf"){
        if(move_uploaded_file($_FILES['brwAddNews']['tmp_name'], $target_path) && move_uploaded_file($_FILES['brwAddNewsPdf']['tmp_name'], $pdf_target_path))
        {
            echo "file uploaded";
        }
        else echo "Not uploaded";
    }
    else echo "Its not a pdf file";
}

?>

<center>
<form action="try.php?action=submit" method="post" enctype="multipart/form-data" name="frmNews"  id="frmNews" >
    <table><tr><td>NAME :<td/><td><input name="news_name" type="text" class="textfield" id="news_name" value="" /><br></td></tr>
    <tr><td>PDF : <td/><td><input name="brwAddNewsPdf" type="file" id="brwAddNewsPdf" multiple="multiple" /><br></td></tr>
    <tr><td>IMAGE : <td/><td><input name="brwAddNews" type="file" id="brwAddNews" multiple="multiple"/><br></td></tr>
    <tr><td><td/><td><input name="btnSave" type="submit" class="buttons" id="btnSave"  value="Save"></td></tr>
</form>
</center>

我的输出为:

Array
(
    [brwAddNewsPdf] => Array
        (
            [name] => Newsletter-volume16.pdf
            [type] => 
            [tmp_name] => 
            [error] => 1
            [size] => 0
        )

    [brwAddNews] => Array
        (
            [name] => PDF-thumbnail.jpg
            [type] => image/jpeg
            [tmp_name] => /tmp/php0KuLSj
            [error] => 0
            [size] => 4536
        )

)
Not uploaded

可能是什么问题?我错过了什么?

2 个答案:

答案 0 :(得分:2)

Error Messages Explained手册页毫无疑问:

  

价值:1;上传的文件超出了upload_max_filesize指令   在php.ini

答案 1 :(得分:2)

到目前为止,我遇到了同样的错误。当我看到这个问题时,我需要提供帮助。

这是一个有点老问题,但在这里解决方案:

首先,错误。 你有两个文件的输出方式,第一个是错误1,第二个是错误0。 在documentation中,我们有关于错误值的解释:

  

UPLOAD_ERR_OK
  值:0;
  没有错误,文件上传成功。

     

UPLOAD_ERR_INI_SIZE
  值:1;
  上传的文件超出了php.ini中的upload_max_filesize指令。

其次,要知道您的错误与存档的大小有关,您只需要增加upload_max_filesize文件的php.ini即可。 它有点简单,但你可以做得更好。 如果你把它放在你的上传表格上:

<input type="hidden" name="MAX_FILE_SIZE" value="12000" />

您将在上传之前检查文件的大小。控制上传的最大尺寸并不是最好的事情(可以简单地作弊),但它会帮助您的用户知道他的文件太大而无需上传。
请参阅here有关PHP上传的更多信息。

Finnaly,重启你的php。在这里我使用php5-fpm。

# service php5-fpm restart

提示:不要在php.ini中使用您想要上传的确切大小,我使用的MB比我想要的多。然后我在我的代码中对待它。这将删除错误,您可以在应用程序中按照自己的意愿处理。例如:如果您有12M的文件,请输入20M。

OBS:对于多个文件,我真的不知道总和是否大小。