ホームページ  >  記事  >  バックエンド開発  >  このアップロード コードにはどのような問題がありますか?

このアップロード コードにはどのような問題がありますか?

WBOY
WBOYオリジナル
2016-06-13 13:51:41901ブラウズ

このアップロード コードにはどのような問題がありますか? ? ?
このアップロード コードではアップロードされるファイルのサイズに制限はありませんが、100K を超えるとアップロードできなくなります。何が問題ですか?
ファイルのアップロードを 500K 以内に制限したいのですが、どうすれば変更できますか?



$allow_type=array("m4r","jpg");//アップロードできる画像の種類

$ name=$ _FILES['upImg']['name']; //元のクライアントファイル名

$upload_dir="upload/";//画像保存ディレクトリ

//strto lower文字を変更する 文字列を小文字に変換します

$file_suffix=strto lower(getFileSuffix($name));

if(!in_array($file_suffix,$allow_type))

{

//implode は配列要素を文字列に結合します

$all_type=implode(",",$allow_type);

exit("<script>alert('画像は $all_type 形式でのみアップロードできます! ');history.back();</script>");

}

//文字列を配列に分割します

$name_array=explode(".",$name);


do
{

$name_array[0]=randomFileName();

$name=implode(".",$name_array);

$upload_file=$upload_dir.$name;

}while(file_exists($upload_file));


$tmp_name=$_FILES['upImg']['tmp_name'];

//is_uploaded_file ファイルが HTTP POST 経由でアップロードされるかどうかを決定します

if(is_uploaded_file ($ tmp_name))

{




//move_uploaded_file アップロードされたファイルを指定したディレクトリに移動

if(move_uploaded_file($tmp_name) ,$upload_file ))

{

echo "$upload_file 曲が正常にアップロードされました。 ";
exit("<script>top.document.getElementById('url').value='$upload_file';</script>");


}

}
//ファイルサフィックス名を取得します

function getFileSuffix($fileName)

{

//strrchr は $ 内の最後の出現を返します。 fileName を substr の末尾に配置し、'.' を削除します。

return substr(strrchr($fileName, '.'), 1);

}

/ /ランダムなファイル名を生成します

functionrandomFileName()

{

//タイムゾーンを北京時間に調整します。php5 のデフォルトはグリニッジ標準時です

date_default_timezone_set("PRC");

return date('YmdHis').rand(100,999);

}



?>

-----解決策--------------------------
1. 100K はアップロードできません。$_FILES['upImg']['error'] の値を確認してください。次のような状況が考えられます:
値が 1 で、ファイル サイズが php で定義されている Upload_max_filesize を超えていることを示します。 .ini;
値 2 の場合、ファイル サイズが HTML の制限を超えていることを意味します。ファイル サイズは HTML の次のコードによって制限できます:

HTML コード
<!-- ファイル サイズを 100KB 以下に制限します -->
<input type="hidden" name="MAX_FILE_SIZE" value="102400" />
<input type="file" name="upImg"/>
<br><font color="#e78608">------解決策---------</font><br>PHP内で判定することも可能です! <br>if($_FILES['upImg']['size']>1024*500)<br>{ <br> echo "ファイルが 500k を超えているため、アップロードできません!";<br> exit;<br> }<br>アップロードできないことに関して、私の個人的な推測は次のとおりです: <br>do<br> {<br><br> $name_array[0]=randomFileName();<br><br> $name=implode (" .",$name_array);<br><br> $upload_file=$upload_dir.$name;<br><br> }while(file_exists($upload_file));<br>ファイルは $upload_file より前に存在する必要があります=$upload_dir .$name; 実際、最初はファイルが存在しないため、この do 内のコードはまったく実行されません。つまり、$upload_file はそのファイル パスを正確に反映できないため、実行されません。 move_uploaded_file が使用されるときに後で実行されます。 <div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。