leanring 2016-04-04 2278浏览量
MongoDB是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。
MongoDB将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB文档类似于JSON对象。字段值可以包含其他文档,数组及文档数组。
2.MongoDB的特点
@* 引用EasyUI样式 *@ <link rel="stylesheet" type="text/css" href="../Content/jquery-easyui-1.3.2/themes/default/easyui.css"> <link rel="stylesheet" type="text/css" href="../Content/jquery-easyui-1.3.2/themes/icon.css"> <link rel="stylesheet" type="text/css" href="../Content/jquery-easyui-1.3.2/demo/demo.css"> <script type="text/javascript" src="../Content/jquery-easyui-1.3.2/jquery-1.8.0.min.js"></script> <script type="text/javascript" src="../Content/jquery-easyui-1.3.2/jquery.easyui.min.js"></script> @*引用mongo批量上传的插件*@ <link href="../Scripts/uploadify-v3.1/uploadify.css" rel="stylesheet"> <script src="../../Scripts/uploadify-v3.1/jquery.uploadify-3.1.min.js"></script> <script src="../Content/jquery-easyui-1.3.2/locale/easyui-lang-zh_CN.js"></script>2.前台页面布局设计
<div style="margin-left:700px;margin-top:-600px;"> <div id="q" data-options="iconCls:' icon-save'" class="easyui-panel" title="音频图片文件管理" style="width: 400px; height: 500px; padding: 20px;"> @* 批量上传文件到Mongo按钮 *@ <div style="margin-left:20px;margin-top:20px;"> <input type="file" id="file_upload" name="file_upload" value="添加文件"/> </div> <div style="margin-top: 5px;margin-left:20px;"> <a id="upload" class="easyui-linkbutton" data-options="iconCls:'icon-export'" style="padding-left: 30px;margin-top:10px;" >上传</a><br /> <a id="cancel" class="easyui-linkbutton" data-options="iconCls:'icon-cancel'" style="padding-left: 30px;margin-top:10px;">取消</a> </div> </div> </div>3.按钮样式的设置
<style> .uploadify-button{ color:#444; border: 1px solid #b7d2ff; filter: none; background: #eaf2ff; height:25px; width:90px; } .uploadify:hover .uploadify-button{ background:#eaf2ff; color:#000000 } .center { width: 1000px; margin: 5px auto; } </style>
public class MongodbHelpController : Controller { // // GET: /MongodbHelp/ //全局变量 private static MongoDatabase DB; public static string fileTable = "fs";//相当于我们需要操作的表的名称 //Sets up the environment. public void Init() { //连接本地数据库 string ConnectionString = "127.0.0.1"; //ConfigurationManager.AppSettings["mondoDbConnection"]; if (String.IsNullOrEmpty(ConnectionString)) { throw new ArgumentNullException("Connection string not found."); } MongoServerSettings mongoSetting = new MongoServerSettings(); mongoSetting.MaxConnectionPoolSize = 15000;//设定最大连接池 mongoSetting.WaitQueueSize = 500;//设定等待队列数 mongoSetting.Server = new MongoServerAddress(ConnectionString, 27017); int count = MongoServer.MaxServerCount; MongoServer server = MongoServer.Create(mongoSetting);//创建连接数据文件 DB = server.GetDatabase("DBTest");//创建数据库连接 } public void ProcessRequest() { Init();//initialize the mongo //获取前台页面的action值 string action = Request.Form["action"]; switch (action) { case "LIST": GetFileList(); break; //获取文件列表 case "UPLOAD": Upload(); break; //上传文件 case "DELETE": Delete(); break;//删除文件 case "DOWNLOAD": DownFile(); break; //下载文件 } } public bool IsReusable { get { return false; } } //上传文件 public void Upload() { try { //设置一次只上传一个文件,值为File //设置上传多个文件,值为Filedata; HttpPostedFileBase file = (HttpPostedFileBase)Request.Files["Filedata"]; //获取文件 int nFileLen = file.ContentLength; MongoGridFSSettings fsSetting = new MongoGridFSSettings() { Root = fileTable }; MongoGridFS fs = new MongoGridFS(DB, fsSetting); byte[] myData = new Byte[nFileLen]; file.InputStream.Read(myData, 0, nFileLen); //调用Write、WriteByte、WriteLine函数时需要手动设置上传时间 //通过Metadata 添加附加信息 MongoGridFSCreateOptions option = new MongoGridFSCreateOptions(); option.UploadDate = DateTime.Now; //创建文件,文件并存储数据 using (MongoGridFSStream gfs = fs.Create(file.FileName, option)) { gfs.Write(myData, 0, nFileLen); gfs.Close(); } } catch (Exception e) { Response.Write(0); } Response.End(); } }
//================上传文件到Mongo-胡志婷-2016年3月29日14:28:26================// $("#file_upload").uploadify({ 'auto': false, //是否自动上传 'buttonText': '添加文件', //按钮显示文本 'successTimeout': 99999, //成功等待时间 'swf': '../../Scripts/uploadify-v3.1/uploadify.swf', //uploadify路径 'uploader': '/MongodbHelp/ProcessRequest', //定义服务器端上传数据处理脚本文件swf的路径 'multi': true, //允许选择多个文件 'fileSizeLimit': '1600MB', //文件最大的大小 'queueSizeLimit': 10, //一次最多可选择的文件数量 'progressData': 'speed', //上传文件显示的样式,进度条 'onSelectError': function (file, errorCode, errorMsg) { //出错提示 switch (errorCode) { case -100: alert("上传的文件数量已经超出系统限制的" + jQuery('#file_upload').uploadify('settings', 'queueSizeLimit') + "个文件!"); break; case -110: alert("文件 [" + file.name + "] 大小超出系统限制的" + jQuery('#file_upload').uploadify('settings', 'fileSizeLimit') + "大小!"); break; case -120: alert("文件 [" + file.name + "] 大小异常!"); break; case -130: alert("文件 [" + file.name + "] 类型不正确!"); break; } }, 'onQueueComplete': function (queueData) { //所有文件被处理完成时触发该事件 getFiles(); alert("文件上传成功!"); return; } }); //上传按钮 $("#upload").click(function () { $("#file_upload").uploadify('settings', 'formData', { action: 'UPLOAD' }); $("#file_upload").uploadify('upload', '*'); }); //取消按钮 $("#cancel").click(function () { $("#file_upload").uploadify('cancel', '*'); });
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
集结各类场景实战经验,助你开发运维畅行无忧