【问题标题】:PHP error uploading filePHP错误上传文件
【发布时间】:2012-05-04 16:27:35
【问题描述】:

好的,所以我为网站设置了一个上传引擎,以便经过身份验证的用户可以上传库中歌曲的音频文件(密钥),但是当我尝试上传任何文件时遇到了这个奇怪的问题超过 5MB。

顺便说一下,我将 php.ini 的最大文件大小设置为 50MB

一切都正确上传,但没有与另一端文件关联的数据。

HTML 代码:

<form action="keyUpload.php?id=<?php echo $id;?>" method="post" enctype="multipart/form-data">
<p style="color:#fff;font-size:30px;font-family:Times">
Add a new Key:<br/><input name="uploaded" type="file" id="file"><br />
<input type="text" name="kname" id="kname" value placeholder="Key Name (Ex. Demo, A#, etc.)" style="width:300px;"><br/>
<button class="button">Upload File</button><br/>
<span style="font-size:12px;">*Max Filesize is 50 MB*</span>
</p>
</form>

PHP 代码:

<?php 
$id=$_GET["id"];
$name=$_POST["kname"];

$name = str_replace(" ","%20",$name);

$allowed_filetypes = array('.mp3','.m4a','.wav','.wma');

$filename = $_FILES['uploaded']['name'];
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1);

当我上传大于 5 MB 的文件时,$filename 和 $ext 都是空变量。在所有其他情况下,此引擎都能完美运行。

当回显时,根本没有任何反应,因此如果文件不存在,引擎显然不会保存文件。怎么回事?

var_dump:

array(0) { }

感谢您的帮助!

【问题讨论】:

    标签: php file upload


    【解决方案1】:

    检查上传错误:

    if ($_FILES['uploaded']['error'] !== UPLOAD_ERR_OK) {
       die("Upload failed with error code " . $_FILES['uploaded']['error']);
    }
    

    错误代码在这里定义:http://www.php.net/manual/en/features.file-upload.errors.php

    同样,不要使用文件名来验证上传。恶意用户伪造文件名并上传恶意文件并非易事。

    ren nastyvirus.exe good_tune.mp3
    

    并且不要对文件名使用字符串操作。有一整套用于文件名操作的 PHP 函数,例如http://php.net/basename

    【讨论】:

    • 我所做的只是“上传失败并出现错误代码”,仅此而已。此外,我认识所有将亲自使用它的人,因此无需担心恶意使用。 ;)
    • 有趣,应该至少输出一个数字。 var_dump($_FILES) 显示什么?将其粘贴为上面的代码,因为 cmets 不适合放置格式化转储
    • var dump 刚刚返回了我在上面添加的内容。
    • 好的。所以根本没有文件上传。不知道,但这就是问题所在。如果上传失败,您至少会在 $_FILEs 中获得一些数据。
    • 我找到了。原来,当我在 ini 中更改最大文件大小时,我忽略了最大后置大小,默认为 5M!谢谢你的帮助! +1
    【解决方案2】:

    在 php.ini 中也设置max_post_size

    【讨论】:

      【解决方案3】:

      body, html, iframe { 
        width: 100% ;
        height: 100% ;
        overflow: hidden ;
      }
      
      span {
        font-size:12px
      }
          <form action="keyUpload.php" method="POST" enctype="multipart/form-data">
            Add a new Key:
            <input type="file" name="file" />
            <input type="submit" name="submit" value="Upload File" />
          </form>
          <span>*Max Filesize is 50 MB*</span>    
          <hr />
          <p>keyUpload.php</p>
          <iframe src="https://ideone.com/gKDwew"></iframe>

      【讨论】:

        猜你喜欢
        • 2012-06-18
        • 2010-09-05
        • 1970-01-01
        • 2013-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多