0

以下のスニペットをご覧ください。5MBを超えるファイルを制限する方法で使用しています。ファイルが5mbを超えると、「アップロードしようとしたファイルは許可されていません」と表示されますが、実際には「アップロードしようとしたファイルが大きすぎます」と表示されます。コードの間違った部分に配置したわけではありません。使用しているのは次のとおりです。

if(filesize($_FILES['filename']['tmp_name']) > $max_filesize)

コード全体:

// Configuration - Your Options
$allowed_filetypes = array('.pdf','.jpg','.png','.gif'); 
$max_filesize = 5242880; // Maximum filesize in BYTES (currently 0.5MB).
$upload_path = "/store/user/$user"; 
$filename = $_FILES['filename']['name']; 
$ext = substr($filename, strpos($filename,'.'), strlen($filename)-1); 
if(!in_array($ext,$allowed_filetypes))
die('The file you attempted to upload is not allowed.');
// Now check the filesize, if it is too large then DIE and inform the user.
if(filesize($_FILES['filename']['tmp_name']) > $max_filesize)
die('The file you attempted to upload is too large.');
// Check if we can upload to the specified path, if not DIE and inform the user.
if(!is_writable($upload_path))
die('');
4

1 に答える 1

1

ファイル名拡張子コードが正しくない可能性があります。

試してみてください:

$allowed_filetypes = array('pdf', 'jpg', 'png', 'gif');
// ...
$ext = strtolower(pathinfo($filename, PATHINFO_EXTENSION));
// ...

それ以外の場合、ファイルサイズの制約により、ファイルは基本的にアップロードされません。これは、を見て確認できます$_FILES['filename']['error']。値は0である必要があります。

0でない場合は、ここでその意味を確認できます:http ://www.php.net/manual/en/features.file-upload.errors.php

あなたの場合、ファイルはおそらく大きすぎます。何が間違っている可能性があるかをここで確認してください:http ://www.php.net/manual/en/features.file-upload.common-pitfalls.php

于 2012-05-09T02:47:05.630 に答える