mysqlへのファイルアップロードについて

564 views
Skip to first unread message

ken ken

unread,
Apr 12, 2015, 10:04:54 PM4/12/15
to codeign...@googlegroups.com
先日メーリングリストに参加させて頂きましたケンと申します。
まだ初心者なので何かとご教示頂きたく、よろしくおねがいいたします。

Codeigniterでmysqlへのファイルアップロード、ダウンロードのコードの書き方が
分からなくて困っています。
ファイルサーバへのアップロードはクラスが用意されていると思うのですが、
直接DBへのアップロードやダウンロードは出来ないのでしょうか?
環境は、Codeigniter2.0.3、php5.4.32、mysql5.6.20です。

今後ともよろしくお願いいたします。

ken ken

unread,
Apr 12, 2015, 10:34:44 PM4/12/15
to codeign...@googlegroups.com
吉川様

曖昧な表現失礼いたしました。
具体的にはEXCELやWORDなどのファイルをBLOB型のカラムにそのまま保存
やダウンロードできないかと考えております。

今後ともよろしくおねがい致します。


2015年4月13日月曜日 11時04分54秒 UTC+9 ken ken:

Hiro Sakuma

unread,
Apr 14, 2015, 2:24:57 AM4/14/15
to codeign...@googlegroups.com
Hiro Sakumaです。

CodeIgniter ではありませんが、PHP の場合、ブラウザ経由でファイルがアップ
ロードされると $_FILES という配列で情報が渡されます。
データの実体ではなく、ファイルシステム上に一時的に保管されたファイル名が
得られますのでこれを通常のファイルと考えて取り扱えばよろしいかと思います。

ダウンロードであれば、MySQL から SELECT したデータに必要な HTTPヘッダを
追加してを出力するだけですので容易に実装できるでしょう。

CodeIgniter のファイルアップロードクラスを使えばフォームの作成とファイル
化までの実装が多少省略できますが、アプリケーションが受け取れるのはファイ
ルの実態なのでデータベースへの INSERT は実装が必要です。
----
Hiro Sakuma
<sak...@zero52.com>

ken ken

unread,
Apr 17, 2015, 8:52:59 PM4/17/15
to codeign...@googlegroups.com
Hiro Sakuma様
吉川様

ご教示ありがとうございました。
いろいろと試行錯誤をしましたが、私のCIとPHPの理解が進まず、
うまくいきません。
今回はSQLにファイルを格納する方式をあきらめて、CIのクラスを
利用してファイルサーバに格納しSQLにはファイル名のみを書いて
管理しようと思います。

今後ともよろしくお願いいたします。





2015年4月14日火曜日 15時24分57秒 UTC+9 Hiro Sakuma:

戸田広

unread,
Apr 19, 2015, 1:54:36 AM4/19/15
to codeign...@googlegroups.com
こんにちは、戸田です。

遅くなりましたが、PHPからDBのBLOB列にデータを入れるのは、
CodeIgniterでは特別なことは何もやっていなくて、
PHPの、各RDBMSへの接続ライブラリーの仕様に依存しています。
CodeIgniter流というより、PHP単体でのやり方がわかっていれば、そのままやれます。

このため、MySQL などですと、普通にファイルのバイナリーデータが保持された変数を
プリペアードクエリーなどに渡せばOKなのですが、
SQL Server などですと PHP からではそのやり方は対応していなくて、うまくいきません。

RDBMSの種類など、環境への依存度を下げるやり方として、
私は BASE64 などの printable ascii な文字列でエンコードしたデータを
長い文字列を保存できる列(LONGTEXTとかVARCHAR(max)とか)に保存するやり方を、
BLOB列に保存する代替策としてよく使っています。
このような処理をModelクラスに隠蔽すると良いでしょう。

BASE64 にエンコードするとだいぶデータ量が増えてしまうので注意が必要ですが、
PHPに組み込み関数があるので実装は非常に簡単です。


2015年4月18日土曜日 9時52分59秒 UTC+9 ken ken:
Reply all
Reply to author
Forward
0 new messages