【发布时间】:2014-09-02 20:53:13
【问题描述】:
我一直在使用MongoDB 和PHP 进行CRUD 操作。我可以开发一个演示应用程序以及文件上传功能,用户可以上传image、view 和delete。
[编辑]
文件上传
<?php
if(isset($_POST['btn_submit']))
{
$conn = new MongoClient();
$db = $conn->selectDB('mydb');
$gridfs = $db->getGridFS();
$id = $gridfs->storeUpload('pic', array('tag' => ""));
$gridfsFile = $gridfs->get($id);
var_dump($gridfsFile->file);
/*
$files = $db->fs->files;
$files->update(array("filename" => $_FILES['pic']['name']), array('$set' => array("enterby" => "Gayatri patel", "tag" =>"image")));*/
$conn->close();
}
?>
<form method="POST" enctype="multipart/form-data">
<label for="username">Select Type</label>
<select name="document_type" id="document_type">
<option value="image/jpeg">jpg</option>
<option value="image/gif">gif</option>
<option value="image/png">png</option>
<option value="text/plain">txt</option>
<option value="application/pdf">pdf</option>
<option value="application/x-zip">zip</option>
</select>
<label for="pic">Please upload a profile picture:</label>
<input type="file" name="pic" id="pic" />
<input type="submit" name="btn_submit" />
</form>
文件列表
<?php
$conn = new MongoClient();
$db = $conn->selectDB('mydb'); // Authenticate to MongoDB
$grid = $db->getGridFS(); // Initialize GridFS
$cursor = $grid->find();
foreach ($cursor as $obj) { // iterate through the results
echo 'Filename: <a href="fileDownload.php?file='.urlencode ($obj->getFilename()).'">'.$obj->getFilename().'</a> Size: '.$obj->getSize().'
<a href="fileDelete.php?file='.urlencode ($obj->getFilename()).'">Delete</a><br/>';
}
$conn->close(); // Disconnect from Server
exit(0);
?>
文件查看
<?php
$conn = new MongoClient();
$db = $conn->selectDB('mydb'); // Authenticate to MongoDB
$grid = $db->getGridFS(); // Initialize GridFS
$ask = urldecode($_REQUEST['file']); // Get filename requested
$file = $grid->findOne(array('filename' => $ask));
$files = $db->fs->files;
$file1 = $files->findOne(array('filename' => $ask));
$id = $file->file['_id'];
if ( (substr($ask,-3) == 'zip') || (substr($ask,-3) == 'pdf') ) {
/* Any file types you want to be downloaded can be listed in this */
header('Content-Type: application/octet-stream');
header('Content-Disposition: attachment; filename='.'"'.$ask.'"');
header('Content-Transfer-Encoding: binary');
$cursor = $db->fs->chunks->find(array("files_id" => $id))->sort(array("n" => 1));
foreach($cursor as $chunk) {
echo $chunk['data']->bin;
}
}
else {
//header('Content-Type: '.$file1["contentType"]);
header('Content-Type: image/jpeg');
echo $file->getBytes();
}
$conn->close(); // Disconnect from Server
exit(0);
?>
文件删除
<?php
$conn = new MongoClient();
$db = $conn->selectDB('mydb'); // Authenticate to MongoDB
$grid = $db->getGridFS(); // Initialize GridFS
$filename = urldecode($_REQUEST["file"]); // Get requested filename
$file = $grid->findOne($filename); // Find file in GridFS
$id = $file->file['_id']; // Get the files ID
$grid->delete($id); // Delete the file
$conn->close(); // Disconnect from Server
exit(0);
?>
现在我需要使用MongoDB 开发多个文件上传。用例如下
- 如果用户上传单张图片,请给
view它提供选项 - 如果用户上传多个图像,即多个文件上传,请给出
download.zip格式的选项。
我怎样才能实现它?
谢谢。
【问题讨论】:
-
告诉我们你做了什么。
标签: php mongodb file-upload