MongoGridFS::storeUpload
(PECL mongo >=0.9.0)
MongoGridFS::storeUpload — アップロードされたファイルをデータベースに格納する
説明
public MongoGridFS::storeUpload
( string $name
[, array $metadata
] ) : mixed
パラメータ
name
アップロードされたファイルの name フィールド。 これは、HTML フォームの file フィールドの
name
属性と同じでなければいけません。metadata
格納するファイルに含めるその他のメタデータフィールド。
注意:
これらのフィールドは、ドライバが自動生成したフィールドも上書きします。詳しい説明は、MongoDB コアドキュメントの » files collection を参照ください。この挙動の現実的な使い道としては、ファイルの
chunkSize
や_id
を独自に指定する場合などがあります。注意:
filename
フィールドには、クライアントのファイル名 ($_FILES['foo']['name']
など) が入ります。
返り値
格納したファイルドキュメントの _id
を返します。metadata
パラメータで _id
を明示的に指定していない場合は、自動生成した MongoId となります。
注意:
複数のファイルを同じフィールド名でアップロード した場合は、このメソッドは何も返しません。 しかし、ファイル自体の処理はそのまま行われます。
エラー / 例外
アップロードされたファイルの読み込みに失敗したり、
chunks
あるいは files
コレクションへの追加に失敗したりした場合に
MongoGridFSException をスローします。
変更履歴
バージョン | 説明 |
---|---|
PECL mongo 1.2.5 | 二番目のパラメータがメタデータの配列に変わりました。これより前のバージョンでは、
二番目のパラメータはオプションの文字列で、ファイル名を上書きするものでした。 |
例
例1 MongoGridFS::storeUpload() を使った HTML フォームの例
こんな HTML フォームがあるものとします。
<form method="POST" enctype="multipart/form-data"> <label for="username">ユーザー名</label> <input type="text" name="username" id="username" /> <label for="pic">プロフィール画像をアップロードしてください</label> <input type="file" name="pic" id="pic" /> <input type="submit" /> </form>
アップロードされたファイルを MongoDB に格納するには、フォームの投稿を処理するスクリプト側でこのようにします。
<?php$m = new MongoClient();$gridfs = $m->selectDB('test')->getGridFS();$gridfs->storeUpload('pic', array('username' => $_POST['username']));?>
参考
- MongoGridFS::put() - ファイルをデータベースに格納する
- MongoGridFS::storeBytes() - バイト列をデータベースに格納する
- MongoGridFS::storeFile() - ファイルをデータベースに格納する
- MongoDB コアドキュメントの » GridFS