MySQLデータベースに画像を保存するいくつかの方法

MySQLデータベースに画像を保存するいくつかの方法

通常、ユーザーがアップロードした写真はデータベースに保存する必要があります。

一般的に、解決策は 2 つあります。

1. 画像が保存されているパスをデータベースに保存します。

2. バイナリ データ ストリームの形式でイメージをデータベース フィールドに直接書き込みます。

具体的な方法は次のとおりです。

1. 画像のアップロード パスをデータベースに保存します。

  string uppath="";//画像のアップロードパスを保存するために使用されます//アップロードされた画像のファイル名を取得します string fileFullname = this.FileUpload1.FileName;
  //写真がアップロードされた時刻を取得します。時刻を写真の名前として使用すると、写真に同じ名前が付けられるのを防ぐことができます。 string dataName = DateTime.Now.ToString("yyyyMMddhhmmss");
  //画像ファイル名を取得します(拡張子なし)
  文字列 fileName = fileFullname.Substring(fileFullname.LastIndexOf("\\") + 1);
  //画像拡張子を取得します。 string type = fileFullname.Substring(fileFullname.LastIndexOf(".") + 1);
  // 必要な形式かどうかを判断しますif (type == "bmp" || type == "jpg" || type == "jpeg" || type == "gif" || type == "JPG" || type == "JPEG" || type == "BMP" || type == "GIF")
  {
  // 指定されたパスのフォルダーに画像をアップロードします。 this.FileUpload1.SaveAs(Server.MapPath("~/upload") + "\\" + dataName + "." + type);
  // パスを変数に保存し、変数の値をデータベースの対応するフィールドに保存します。 uppath = "~/upload/" + dataName + "." + type;
  }

2. 画像をバイナリ データ ストリームとしてデータベースに直接保存します。

次の名前空間を参照します。

    System.Drawing を使用します。
  System.IO を使用します。
  System.Data.SqlClient を使用します。
  データベースを設計する場合、テーブル内の対応するフィールドタイプは画像です。
  保存:
  //画像パス string strPath = this.FileUpload1.PostedFile.FileName.ToString ();
  // イメージを読み取ります FileStream fs = new System.IO.FileStream(strPath, FileMode.Open, FileAccess.Read);
  BinaryReader br = 新しい BinaryReader(fs);
  byte[] photo = br.ReadBytes((int)fs.Length);
  br.閉じる();
  fs.Close();
  //SqlConnection に保存 myConn = new SqlConnection("データ ソース=.;初期カタログ=stumanage;ユーザー ID=sa;パスワード=123");
  string strComm = " INSERT INTO stuInfo(stuid,stuimage) VALUES(107,@photoBinary )"; //データベース ステートメントを操作し、必要に応じて SqlCommand を変更します。 myComm = new SqlCommand(strComm, myConn);
  myComm.Parameters.Add("@photoBinary", SqlDbType.Binary, photo.Length);
  myComm.Parameters["@photoBinary"].Value = 写真;
  myConn.Open();
  (myComm.ExecuteNonQuery() > 0) の場合
  {
  this.Label1.Text = "ok";
  }
  myConn.Close();
  読む:
  ...mycon.Open() を省略してデータベース文字列に接続します。
  SqlCommand コマンド = 新規
  SqlCommand("select stuimage from stuInfo where stuid=107", mycon); //必要に応じてクエリステートメントを変更します byte[] image = (byte[])command.ExecuteScalar ();
  //データベースから読み取った画像の保存パスと名前を指定します。 string strPath = "~/Upload/zhangsan.JPG";
  文字列 strPhotoPath = Server.MapPath(strPath);
  //上記のパスと名前に従って画像ファイルを保存します。BinaryWriter bw = new BinaryWriter(File.Open(strPhotoPath,FileMode.OpenOrCreate));
  bw.Write(イメージ);
  bw.Close();
  //画像を表示します this.Image1.ImageUrl = strPath;
  //これら 2 つの方法は、実際のニーズに応じて柔軟に選択できます。

要約する

以上がこの記事の全内容です。この記事の内容が皆様の勉強や仕事に何らかの参考学習価値をもたらすことを願います。123WORDPRESS.COM をご愛顧いただき、誠にありがとうございます。これについてもっと知りたい場合は、次のリンクをご覧ください。

以下もご興味があるかもしれません:
  • MySQL の null 可能フィールドは NULL に設定する必要がありますか、それとも NOT NULL に設定する必要がありますか?
  • MySQL の char、varchar、text フィールド タイプの違い
  • MySQLデータベース移行により、大量のデータを迅速にエクスポートおよびインポートできます
  • MySQL データベースを操作して重複データを削除するシェル スクリプト
  • MySQLはOracleシーケンスに似たソリューションを実装しています
  • シーケンス関数を実装する MySQL コード
  • ソケット ''/tmp/mysql.sock'' 経由でローカル MySQL に接続できない解決策
  • よく使用される MySQL 関数の完全なリスト (分類および要約)
  • MySQLのマスタースレーブ構成を使用して、読み取りと書き込みの分離を実現し、データベースの負荷を軽減します。
  • MySQL sql_mode の分析と設定の説明

<<:  仮想マシンの複製に関するVirtual Boxチュートリアル図

>>:  jQueryはフォーム検証を実装する

推薦する

MySQL CHARとVARCHARの選択方法

目次VARCHAR 型と CHAR 型結論: VARCHAR 型と CHAR 型VARCHAR と ...

Linux システムでの nginx サーバーのインストールと負荷分散構成の詳細な説明

nginx (エンジン x) は、高性能な HTTP およびリバース プロキシ サーバー、メール プ...

redhat7 に yum 経由で mysql5.7.17 をインストールするチュートリアル

RHEL/CentOS シリーズの Linux オペレーティング システムには MySQL ソース自...

Dockerがログファイルを保存する場所の詳細な説明

目次ログはどこに保存されますか?コンテナ内のアプリケーションからのログを表示するDockerデーモン...

ドメイン名を nginx サービスにバインドする方法

nginx.conf で複数のサーバーを設定します。 http リクエストを処理する際、nginx ...

Nodejs と Socket.IO を組み合わせて Websocket の即時通信を実現

目次WebSocketを使用する理由ソケット.ioオープンソースプロジェクト効果プレビューアプリイン...

HTML テーブル マークアップ チュートリアル (5): ライト ボーダー カラー属性 BORDERCOLORLIGHT

表では、左上の境界線の色を個別に定義したり、セルの右下の境界線の色を定義したりできます。これら 2 ...

mysql binlog ログを正しくクリーンアップする 2 つの方法

mysqlはbinlogログを正しくクリーンアップします序文: MySQL の binlog はデー...

CSSアニメーションでポイント獲得効果を実現するアイデアを詳しく解説

最近のプロジェクトでは、ポイントを集める効果を作成する必要があります。 ボスの説明によると、この効果...

Reactソースコードにおけるビット演算について詳しく説明します

目次序文いくつかの一般的なビット操作ビットAND (&)ビットOR (|)ビット否定(~)マ...

Linux での syslogd および syslog.conf ファイルの解釈

1: syslog.conf の概要異なるタイプの Unix の場合、標準の UnixLog システ...

Linux での screen コマンドの使用方法の詳細な説明

GUNスクリーン:公式サイト: http://www.gnu.org/software/screen...

Ubuntu 16.04 で MySQL マスター スレーブ同期を設定する方法

準備1. マスターとスレーブのデータベースのバージョンは一致している必要があります2. マスターデー...

MySQL シーケンス AUTO_INCREMENT の詳細な説明とサンプルコード

MySQL シーケンス AUTO_INCREMENT の詳細な説明とサンプルコードMySQL シーケ...

CSS スクロールバースタイル変更コード

CSS スクロールバースタイル変更コード .scroll::-webkit-scrollbar { ...