mySQL に、データ型が "BLOB" の "image" というフィールドを持つ特定のテーブルがあります。そのフィールドに画像をphp経由ではなく、コマンドラインクライアントから直接アップロードできるかどうか疑問に思っていました...可能であれば、画像ファイルを正確にどこに配置すればよいですか?
質問する
49644 次
6 に答える
28
LOAD_FILE()関数を使用してみてください。
UPDATE `certain_table`
SET image = LOAD_FILE('/full/path/to/new/image.jpg')
WHERE id = 1234;
ファイル名へのパス、権限などに関する要件については、マニュアルを参照してください。
于 2011-12-08T23:32:54.627 に答える
9
LOAD_FILE
ファイルがサーバー上にある場合、特定の特権でのみ機能します。クライアント側で完全に機能させる方法を見つけました:
mysql -e "update mytable set image=FROM_BASE64('`base64 -i image.png`')" DBNAME
アイデアは、画像をオンザフライで base64 にエンコードし、MySql でデコードすることです。
于 2016-12-07T12:58:14.797 に答える
2
データベースに画像を直接アップロードしないことをお勧めします。非常に非効率的です。画像の場所と名前を単純に保存し、それらの画像をどこかのフォルダーに保存することをお勧めします。
コマンドライン経由で「アップロード」したい場合は、次の操作を実行できます。
insert into table(image_loc) values('/images/random/cool.jpg') where id=1;
環境によっては、シェル アクセスを使用して画像を移動できます。これらのイメージで何をしようとしているのか、システムがどのようにセットアップされているのかよくわかりません。おそらくそれについて明確にする必要があります。
于 2011-12-08T23:33:44.983 に答える
0
サンプル アプリケーションを作成してから、データベースに値を挿入する方がより望ましい方法です。たとえば、このメソッドを使用して BLOB データ型をデータベースに入力できます...
[WebMethod]
public string sendDataToMySql(string get_name, byte[] buffer)
{
string MyConString = "SERVER=localhost;" +
"DATABASE=test;" +
"UID=root;" +
"PASSWORD=admin;";
MySqlConnection connection = new MySqlConnection(MyConString);
connection.Open();
MySqlCommand command = new MySqlCommand("", connection);
command.CommandText = "insert into testImage(name, image) values(@name, @image);";
MySqlParameter oParam1 = command.Parameters.Add("@name", MySqlDbType.VarChar, 50);
oParam1.Value = get_name;
MySqlParameter oParam2 = command.Parameters.Add("@image", MySqlDbType.Blob);
oParam2.Value = buffer;
command.ExecuteNonQuery();
connection.Close();
return "Data was inserted successfully!";
}
于 2011-12-20T18:44:22.047 に答える