ホームページ  >  記事  >  バックエンド開発  >  PHP での複数の画像アップロードの実装について初心者が知っておくべきこと

PHP での複数の画像アップロードの実装について初心者が知っておくべきこと

烟雨青岚
烟雨青岚転載
2020-06-15 18:04:412813ブラウズ

PHP での複数の画像アップロードの実装について初心者が知っておくべきこと

#PHP での複数の画像アップロードの実装について初心者が知っておくべきこと

今日仕事で必要なことがありました。 : a フォームは、QQ スペースで写真をアップロードするモードと同様に、複数の写真のアップロードを実装します。つまり、一度に複数の画像をアップロードできますが、カバー画像は 1 つだけです。

まず最も重要なことは、サーバー上のファイルを読み書きするときは、アクセス許可を確認する必要があります。アクセス許可がない場合は、まったくのデタラメです。なぜこんなことを言うのですか? 涙を流すだけだからです。

まず、フロントエンド ページ:index.html

<html>
<head><title>多个文件上传表单</title></head>
<body>
<style>
    form{
        margin: 20px;
        padding: 10px;
    }
    #picInput>input{
        display: block;
        margin: 10px;
    }
</style>
<form action="pic.php" method="post" enctype="multipart/form-data">
    <input type="hidden" name="MAX_FILE_SIZE" value="1000000">
    <div id="picInput">
        上传图片:<input type="file" name=&#39;myfile[]&#39;>
    </div>
    <input id="addBtn" type="button" οnclick="addPic1()" value="继续添加图片"><br/><br/>
    <input type="submit" value="上传文件">
</form>
<script>
    function addPic1(){
        var addBtn =  document.getElementById(&#39;addBtn&#39;);
        var input = document.createElement("input");
        input.type = &#39;file&#39;;
        input.name = &#39;myfile[]&#39;;
        var picInut = document.getElementById(&#39;picInput&#39;);
        picInut.appendChild(input);
        if(picInut.children.length == 3){
            addBtn.disabled = &#39;disabled&#39;;
        }
    }
</script>
</body>
</html>

ナレッジ ポイント:

1。 JS による動的 入力ノードを追加し、属性を設定します。アップロードされた画像が 3 つを超える場合、画像をアップロードする機会は与えられなくなります。

#2. ここで最も重要なことは、入力入力ボックスの名前の値です。配列要素を動的に追加することで、アップロードされたすべての画像が動的に配列に追加されます。

バックエンド処理関数

Connection.php

1. 読み取りと保存の両方でデータベースへの接続が必要であるため、それを封印して良い習慣を身につけることができます

<?php
//创建对象并打开连接,最后一个参数是选择的数据库名称
$mysqli = new mysqli(&#39;localhost&#39;,&#39;root&#39;,&#39;&#39;,&#39;test&#39;);
//检查连接是否成功
if (mysqli_connect_errno()){
    //注意mysqli_connect_error()新特性
    die(&#39;Unable to connect!&#39;). mysqli_connect_error();
}

pic.php処理関数

<?php
require_once &#39;connection.php&#39;;
$file = $_FILES[&#39;myfile&#39;];  //得到传输的数据,以数组的形式
$name = $file[&#39;name&#39;];      //得到文件名称,以数组的形式
$upload_path = "zhouqi666.cn/test/images/"; //上传文件的存放路径
//当前位置
foreach ($name as $k=>$names){
    $type = strtolower(substr($names,strrpos($names,&#39;.&#39;)+1));//得到文件类型,并且都转化成小写
    $allow_type = array(&#39;jpg&#39;,&#39;jpeg&#39;,&#39;gif&#39;,&#39;png&#39;); //定义允许上传的类型
    //把非法格式的图片去除
    if (!in_array($type,$allow_type)){
        unset($name[$k]);
    }
}
$str = &#39;&#39;;
foreach ($name as $k=>$item){
    $type = strtolower(substr($item,strrpos($item,&#39;.&#39;)+1));//得到文件类型,并且都转化成小写
    if (move_uploaded_file($file[&#39;tmp_name&#39;][$k],$upload_path.time().$name[$k])){
        //$str .= &#39;,&#39;.$upload_path.time().$name[$k];
        echo &#39;success&#39;;
    }else{
        echo &#39;failed&#39;;
    }
}
//向指定id插入图片地址(虽然是插入,但是是更新字段,不要迷糊了)
$uid = 1;
$str = substr($str,1);
$sql = "UPDATE upload set pic = &#39;".$str."&#39; WHERE id = ".$uid;
$result = $mysqli->query($sql);

ここには書いていない多くの判断がありますが、主にたとえば、最初にフォルダーを作成する必要がありますが、それを自分で判断したり、フォルダーが存在しない場合は作成したり、その他の判断を行うこともできます。

最も重要なことは、慣れていない場合は、段階的にデバッグして結果を確認する必要があるということです。

ピクチャ リアリティ機能

<?php
require_once &#39;connection.php&#39;;
$uid = 1;
$sql = "SELECT pic FROM upload WHERE id =".$uid;
$result = $mysqli->query($sql);
//取出第一个图片的地址
$picpath = &#39;&#39;;
while ($row = $result->fetch_array()){
    $picpath = $row[0];
}
$picpath = explode(&#39;,&#39;,$picpath)[0];
echo "<img src=&#39;".$picpath."&#39;>";
?>

皆さん、読んでいただきありがとうございます。多くのメリットが得られることを願っています。

この記事は、https://blog.csdn.net/zmzwll1314/article/details/72673138

推奨チュートリアル: "

php チュートリアル"## から転載されました。 #

以上がPHP での複数の画像アップロードの実装について初心者が知っておくべきことの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。