私はしばらくの間 MySQL を使用していますが、ファイルをアップロードする必要が生じたのはつい最近のことです。シナリオは次のとおりです。.NET コネクタで実行されている C# コンソール アプリケーションがあり、ユーザーが PDF ファイルをアップロードして、外部キーを使用して特定のテーブルに挿入できるようにする必要があります。
したがって、コマンドの接続を定義すると、次のようになります。
command.CommandText = "INSERT INTO targetTable (ForeignKey,file) VALUES (@key, @arq);";
MySqlParameter FKParam = new MySqlParameter("@key", MySqlDbType.Int32,3);
FKParam.Value = _value; //Received as a function parameter
MySqlParameter fileParam new MySqlParameter("@arq", MySqlDbType.Blob,bytes.length);
FKParam.Value = bytes; //is the name of the variable which holds the readed bytes from a file.
command.Parameters.Add(FKParam);
command.Parameters.Add(fileParam);
command.ExecuteNonQuery();
このコードは完全に機能します...そうでないことを除いて。つまり、ファイル列がnullであることを除いて、新しい行が作成されました。
テーブル構造は次のとおりです。
mysql> show columns from targetTable ;
+---------------------+--------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+---------------------+--------------+------+-----+-------------------+-----------------------------+
| targetTableID | int(3) | NO | PRI | NULL | auto_increment |
| ForeignKey | int(3) | YES | | NULL | |
| file | mediumblob | YES | | NULL | |
+---------------------+--------------+------+-----+-------------------+-----------------------------+
3 rows in set (0.00 sec)