0

さて、認証されたユーザーがライブラリ内の曲のオーディオ ファイル (キー) をアップロードできるように、Web サイトのアップロード エンジンをセットアップしましたが、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) { }

ご助力いただきありがとうございます!

4

3 に答える 3

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です。

于 2012-04-24T02:42:15.240 に答える
0

max_post_sizephp.iniにも設定します。

于 2012-04-24T03:13:14.203 に答える