PHPの画像アップロード($ _FILES)

序文

あなたは絵のアップロードを開始する前に、必要なグローバル配列で、我々初見$_FILESAPI:

構文:

$_FILES["file"]["type"]

パラメータ:

  1. ファイル:フロントエンドのフォーム入力名。
  2. タイプ:「名前」、「タイプ」、「サイズ」、「tmp_name」または「エラー」することができます。

タイプ:

  • $ _FILES [「ファイル」] [「名前」]は - アップロードされたファイルの名前です。
  • $ _FILES [「ファイル」] [「タイプは、」] - ファイルのアップロードのタイプです
  • $ _FILES [「ファイル」] [「サイズ」] - アップロードファイルのサイズをバイト単位で
  • $ _FILES [「ファイル」] [「tmp_name」] - 一時的なコピーの名前は、ファイルサーバに保存されています
  • $ _FILES [「ファイル」] [「エラー」] - ファイルアップロードの結果のエラーコード

テスト

受信してどのような画像のプロパティを表示しますバックエンドのプロパティのフロントエンドから写真をアップロードするかどうかを我々は最初のテスト。直接フロントエンド、バックエンドはPHPファイルを書き込むので、ここで私は、地元のテストでした。

<!-- 前端 -->
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST" enctype="multipart/form-data">
        <input type="file" name="img">
        <input type="submit" name="submit">
</form>

<?php
# 错误判断
if($_FILES['img']['error'] > 0){
    echo '失败:' . $_FILES['img']['error'];
}

# 执行处理
else{
    show();
}

# 处理函数
function show(){
    echo '文件名称:' . $_FILES['img']['name'] . '<br/>';
    echo '文件类型:' . $_FILES['img']['type'] . '<br/>';
    echo '文件大小(MB):' . $_FILES['img']['size'] / 1024 . '<br/>';//默认字节B
    echo '服务器临时副本名称:' . $_FILES['img']['tmp_name'] . '<br/>';
}
?>

ここに画像を挿入説明
もちろん、これらのデータは、ルック悪いに、決意を持って処理されていません。

アップロード制限

イメージは.JPGでなければならず、より小さい1MBでなければならず、需要ので、その後、PHPはどのようにアップロード制限それを完了するために:私たちはいくつかのサイトは、ユーザは、例えば、ファイルを制限することが必要であることを観察するのでしょうか?多くの方法があります!

たとえば、次のようにユーザーがアップロードだけ.GIF / .jpegのファイル、ファイルサイズが小さい20キロバイト以上でなければならないことができます。

<!-- 前端 -->
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST" enctype="multipart/form-data">
        <input type="file" name="img">
        <input type="submit" name="submit">
</form>

<?php
# 后面频繁使用最好封装一下
$type = $_FILES['img']['type'];
$size = $_FILES['img']['size'];
$name = $_FILES['img']['name'];

# 上传限制判断
if(
    ($type == 'image/gif') //是不是git格式
    || ($type == 'image/jpeg') //是不是jpg格式
    || ($type == 'image/jpeg') //兼容IE(判断jpg格式)
    && ($size < 20000) //获取到的size是字节(B)
)

# 通过限制
{
    echo '恭喜您,图像 ' . $name . '可以使用!';
}

# 没通过
else{
    echo '很遗憾,图像 ' . $name . '不符合限制!';
}
?>

ここに画像を挿入説明
注:IEの場合は、識別されたJPGファイルの種類はpjpegでなければならない、FireFoxのため、jpeg形式でなければなりません。

アップロードするファイルを保存します

で私たちを覚えている标题——测试サーバー出力の名前での一時的なコピー?

この一時的なコピーのファイルがアップロードするファイルを保存するので、クリーニング後、私たちは別の場所にコピーする必要が近くなると、スクリプトの最後に消えるか、ページを更新します。

例えば、我々は、画像内のサーバーに直接、判断および制限に加えて、ストアファイルを投げます:

<!-- 前端 -->
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST" enctype="multipart/form-data">
        <input type="file" name="img">
        <input type="submit" name="submit">
</form>

<?php
# 提示信息
echo '即将上传的文件为:' . $_FILES['img']['name'] . '<br>';
echo '临时存储路径为:' . $_FILES['img']['tmp_name'] . '<br>';

# 判断 images 文件夹下是否存在当前文件
if(file_exists('images/' . $_FILES['img']['name'])){
    echo '——————————————' . '<br>';
    echo '存储失败,数据库中已有该文件!' . '<br>';
}

# 如果不存在该文件就存储到 images 文件夹下
else{
    move_uploaded_file(
        $_FILES['img']['tmp_name'],
        'images/' . $FILES['img']['name']
    );
    echo '上传成功!';
}
?>

file_exists()https://www.php.net/file_exists

move_uploaded_filehttps://www.w3school.com.cn/php/func_filesystem_move_uploaded_file.asp

公開された267元の記事 ウォンの賞賛418 ビュー830 000 +

おすすめ

転載: blog.csdn.net/weixin_44198965/article/details/104445590