好的,所以我为网站设置了一个上传引擎,以便经过身份验证的用户可以为库中的歌曲上传音频文件(一个键),但是当我尝试上传任何文件时,我遇到了这个奇怪的问题超过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) { }
感谢您的帮助!
答案 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)
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;