PHP错误上传文件

时间:2012-04-24 02:40:13

标签: php file upload

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

我将php.ini max filesize设置为50MB

所有内容都正确上传,但另一端没有与该文件相关的数据。

HTML CODE:

<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) { }

感谢您的帮助!

3 个答案:

答案 0 :(得分:3)

检查上传错误:

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

答案 1 :(得分:0)

在php.ini中设置max_post_size

答案 2 :(得分:0)

&#13;
&#13;
body, html, iframe { 
  width: 100% ;
  height: 100% ;
  overflow: hidden ;
}

span {
  font-size:12px
}
&#13;
    <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>
&#13;
&#13;
&#13;