phpでファイルがアップロードされない場合の解析例と解決策
2022-01-14 21:03:12
1. アップロードされるファイルのサイズを設定するためにphp.iniを修正します。
2. httpd.conf に "php_value upload_max_filesize "300M"" を追加してください。
3. サーバーを再起動するだけです。
ThinkPhpフレームワークで小さな画像ファイルのアップロードは成功し、大きなファイルのアップロードは失敗します。
後日、phpがアップロードするファイルのサイズを制限していることが原因だと調べて、php.iniを以下のように修正しました。
upload_max_filesize = 300M
post_max_size = 300M
サーバーを再起動しても、まだ同じで、問題は解決していません。
解決方法は以下の通りです。httpd.confに以下を追加してください。
php_value upload_max_filesize "300M"
php_value post_max_size "300M"
もう一度サーバーを再起動すると、OK!
ナレッジエクステンションです。
エラー処理
ファイル配列のエラー属性の判定処理。
$error=$myfile['myfile']['error'];
if ($error==0){//0, means the upload was successful
if (move_uploaded_file($tmp,"userpic/". $picname)) {
echo "Move file successfully";
}else{
echo "Failed to move file";
}
}else{//not 0, match error message
switch ($error){
case 1:
echo "Maximum file upload limit exceeded";//upload_max_filesize in php.ini
break;
case 2:
echo "Exceeded form file size limit";//MAX_FILE_SIZE option in HTML form
break;
case 3:
echo "The file was partially uploaded";
break;
case 4:
echo "No files selected for upload";
break;
case 7://file write failed
case 8:
echo "System error";
break;
}
}
アップロードの制限
フロントエンドでは、アップロードできるファイルの種類とサイズに制限を設定することができます。
<! --form hidden field to limit upload size -->
<input type="hidden" name="MAX_FILE_SIZE" value="2097152">
<! --accept Restrictions on file types -->
<input type="file" name="myfile" accept="image/jpeg,image/png">
制限の単位がバイトであることに注意してください
サーバー側では、レスポンスの制限も行います。
$size=$myfile['size'];//Get the file size
$MaxSize=2097152;//set the maximum allowed bytes
$type=$myfile['type'];//Get the image type
$AllowTypr=array('image/jpeg','image/png','image/gif');//allow type array
if ($error==0){//0, means the upload was successful
if ($size>$MaxSize){
echo "<script>alert('File size exceeded limit');</script>";
echo "<script>history.back(1);</script>";
exit();
}
if (!in_array($type,$AllowTypr)){
echo "<script>alert('Please upload the correct image type');</script>";
echo "<script>history.back(1);</script>";
exit();
}
今回はphpのファイルがアップロードされない例の解析と解決策について紹介しましたが、もっと関連するphpのファイルがアップロードされない解決策の内容はBinaryDevelopの過去記事を検索するか、以下の関連記事を引き続き閲覧してください!今後ともBinaryDevelopをよろしくお願いします。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン