ホームページ >バックエンド開発 >PHPチュートリアル >PHP は指定されたフォルダーにファイルをダウンロードし、ファイルのパスまたは名前がデータベースに保存されます。

PHP は指定されたフォルダーにファイルをダウンロードし、ファイルのパスまたは名前がデータベースに保存されます。

WBOY
WBOYオリジナル
2016-06-13 13:09:24796ブラウズ

PHP は指定されたフォルダーへのファイルのアップロードを実装しており、ファイルのパスまたは名前はデータベースに保存されます。これを実現する方法
専門家はいますか?よろしくお願いします。

-----解決策---------

HTML コード

<フォームアクション=""メソッド="ポスト" enctype="multipart/form-data">
<input type="file" name="img">
…
</フォーム>
<br><font color="#e78608">------解決策---------</font><br>データベース操作を完了します: <br>
PHPコード
<?php
if(is_uploaded_file($_FILES['img']['tmp_name'])){
    if(move_uploaded_file($_FILES['img']['tmp_name'], $target_name)){
        //アップロードが成功してもデータベースに挿入する
        if (!$link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password')) {
            echo 'mysql に接続できませんでした';
            出口;
        }

        if (!mysql_select_db('mysql_dbname', $link)) {
            echo 'データベースを選択できませんでした';
            出口;
        }

        $sql = 'table_name(id, img_path) 値(img_id, $target_name) に挿入';
        $result = mysql_query($sql, $link);

        if (!$result) {
            echo "DB エラー、データベースにテーブルを作成できませんでした";
            echo 'MySQL エラー: ' mysql_error();
            出口;
        }

        mysql_free_result($result);
    }
    それ以外{
        echo "アップロードに失敗しました";
    }
}
?>
<br><font color="#e78608">------解決策---------</font><br>私もやります <br>
PHP コード

define(UPLOAD_ROOT,'アップロードフォルダーのパス');

関数 false_random_name($string,$key){
   #Pseudocode ユーザー名に基づいて擬似ランダムなファイル名を生成し、アップロード後にユーザー名としてアップロード時間を生成します
   # ただし、ファイル名からファイル所有者のユーザー名とアップロード時刻が特定できることがデコードの条件となります。
   #復号化するには、データベースからユーザーのキーを取得する必要があります。キーはユーザー名の最初の 5 文字です。
   #特定の暗号化および復号化コードの実装については、PHP 標準拡張ライブラリ Mcrypt extension の N メソッドを参照してください。
   $fake_random_name を返します;
}
if(!is_writbale(UPLOAD_ROOT)){
  die('アップロードするファイルのディレクトリをchownする必要があります。書き込み可能にしてください~');
}それ以外{
  move_uploaded_file($_FILES['POST フォーム名']['tmp_name'];
  /*
  * このメソッドは、is_upload_file() メソッドを自動的に呼び出して、http rfc1867 プロトコルでアップロードされた正当なファイルかどうかを検出します。
  * もちろん、必要な正当なファイル タイプ $_FILE[$_POST[name]][type] かどうか (pdf img ファイルかどうかなど) を制限することもできます。
 */
  $dbh = new mysqli('localhost','root','sa','your_db_name');#接続ファイルを保護するために、DSN をルート ディレクトリの外に配置することができます。

  $sec_key = substr($_SESSION['ログイン名'],0,5);
  #鍵

  $file_name = fake_random_name($_FILES['POST フォーム名']['tmp_name'],$sec_key);
  #暗号化された名前

  $q_str = "tb(所有者,場所)値に挿入($_SEESION['ログイン名'],UPLOAD_ROOT.DIRECTORYSLASH.$file_name))";/SQL

  $dbh->クエリ($q_str);

  if($dbh->num_rows()==1) echo "アップロードは成功しました。データベース ファイルの詳細 (暗号化された) が挿入されました";
}
<br><font color="#e78608">------解決策---------</font><br>ファイルを保存するパスを設定し、最後のファイルを保存しますファイルは move_uploaded_file 関数を通じてアップロードされ、アップロードされたファイル名がデータベースに挿入されます。
<br><font color="#e78608">------解決策------------------</font><br>学習してポイントを獲得 <div class="clear"></div>
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。