【问题标题】:Not getting file type and tmp_name while uploading上传时未获取文件类型和 tmp_name
【发布时间】:2014-05-06 11:43:14
【问题描述】:

我想同时上传图片和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

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

【问题讨论】:

标签: php html forms file-upload


【解决方案1】:

直到现在我都犯了同样的错误。当我看到这个问题的答案很糟糕时,我需要提供帮助。

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

首先,错误。 您有 2 个文件的输出方式,第一个带有错误 1,第二个带有错误 0。 在documentation我们对错误值有这样的解释:

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

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

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

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

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

最后,重新启动您的 php.ini。这里我使用php5-fpm。

# service php5-fpm restart

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

OBS.:有多个文件,我真的不知道总和大小。

【讨论】:

    【解决方案2】:

    Error Messages Explained 手册页毫无疑问:

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

    【讨论】:

    • 您有什么问题吗?
    • 我没听懂你在说什么问题。?
    • 您发表了评论(“已设置为 12MB”),我不明白您的意思。您是否通过提高限制来解决问题并想要报告?
    • upload_max_filesize 设置为 12MB
    • 但还是不行,这就是我想说的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-10
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多