ITOO--导入图片(MongoDB)
来源:互联网 发布:自学linux运维要多久 编辑:程序博客网 时间:2024/04/28 15:20
初次做ITOO这个项目,我的任务是实现导入图片(MongoDB)功能,咱们先来熟悉一下它的界面吧。
我们的目的是点击添加文件,上传,提示上传成功!
这是上传成功的界面:
可是刚一开始接手,总要弄清这代码是怎么运行的,相关代码在哪里找?他们之间是如何传值的?
于是,调试。。。
我们来看看后台代码吧:
1.点击上传,首先进入MongodbHelpController:
<span style="font-size:18px;"> //上传文件 publicvoid Upload() { try { //设置一次只上传一个文件,值为File //设置上传多个文件,值为Filedata; HttpPostedFileBase file = (HttpPostedFileBase)Request.Files["Filedata"]; //获取文件 int nFileLen =file.ContentLength; MongoGridFSSettings fsSetting = newMongoGridFSSettings() { Root =fileTable }; MongoGridFS fs = newMongoGridFS(DB, fsSetting); byte[] myData = newByte[nFileLen]; file.InputStream.Read(myData, 0, nFileLen); //调用Write、WriteByte、WriteLine函数时需要手动设置上传时间 //通过Metadata添加附加信息 MongoGridFSCreateOptions option = newMongoGridFSCreateOptions(); 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(); }</span>
2.然后获取前台页面action值,根据获取的action,采取对文件的操作:
<span style="font-size:18px;"> publicvoid ProcessRequest() { Init();//initialize themongo //获取前台页面的action值 string action =Request.Form["action"]; switch (action) { case"LIST": GetFileList(); break; //获取文件列表 case"UPLOAD": Upload(); break; //上传文件 case"DELETE": Delete(); break;//删除文件 case"DOWNLOAD": DownFile(); break; //下载文件 } }</span>
这里是上传,所以action值为UPLOAD。
这个上传和我们以前所做的东西不太一样,这个是用了一个叫MongoDB的插件uploadify实现的,在ITOO中代码这样表示:
Cshtml中:
<span style="font-size:18px;">//引用mongo批量上传的插件 <linkhref="../Scripts/uploadify-v3.1/uploadify.css"rel="stylesheet"> <scriptsrc="../../Scripts/uploadify-v3.1/jquery.uploadify-3.1.min.js"></script><scriptsrc="../Content/jquery-easyui-1.3.2/locale/easyui-lang-zh_CN.js"></script></span>核心代码:
<span style="font-size:18px;"> //上传文件到Mongo $("#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', '*');//后上传 });</span>
这是一些基本代码,在实现过程中遇到的问题:点击上传按钮没反应。
找师姐上网查了好多,终于在一片简短的博客中找到了问题所在,原来是因为浏览器没有安装Flash插件,找到这个问题,我们把代码加到了
<span style="font-size:18px;">$("#file_upload").uploadify下,具体如下:</span>
<span style="font-size:18px;">'onFallback':function(){ //Flash无法加载错误 alert("您未安装FLASH控件,无法上传!请安装FLASH控件后再试。"); </span>
这样在以后上线后,如果遇到同样的问题就不会点不动了。
拓展:
关于uploadify,它是一种上传MongoDB的插件,是封装好的,他里面有一些属性,具体请参见uploadify参数设置,事件,方法,函数详解
总结:
刚开始对ITOO的框架学习了一些,之前师哥讲过这样一节课,第二遍学习轻松多了,对这些东西了解之后,开始做分配的任务轻松了很多,调试代码很快就能找到问题,不懂就问吧,每个人接受一个新东西之前都很迷茫,只要相信自己,慢慢就会领悟,加油吧!ITOO正在进行中。。。
0 0
- ITOO--导入图片(MongoDB)
- 快速入手ITOO导入-客户端
- 快速入手ITOO导入-服务端
- 【ITOO】---评教题库导入
- mongodb基础知识(图片)
- 快速入手ITOO导入-改进导入.xlsx格式
- ITOO-权限系统(一)
- MongoDB:MongoDB导入导出
- 快速入手ITOO导入-问题改进和错误解决方案
- MongoDB 数据导入导出(转)
- MongoDB 数据库操作(七)-数据导入
- MongoDB数据库的还原(导入/恢复)
- Windows下MongoDB批量导入(〇)
- 【ITOO-视频系统】——从视频里截取图片
- ITOO之搭建开发环境(一)
- 【ITOO】---基础接口(memcached应用)
- mongodb导入csv文件
- mongodb 备份与导入
- FragmentPagerAdapter与FragmentStatePagerAdapter区别
- 排序:智能收件箱
- 谈谈Processing 3D世界 二
- 端口号的分类
- Android 代码库
- ITOO--导入图片(MongoDB)
- Residual Learning
- 字符串替换(string.find() 和 string.substr() 的使用)----去哪儿2016研发工程师编程题
- poj 2531 Network Saboteur
- RocketMQ与kafka对比
- 并查集 亲戚
- 最长回文串(manachar算法)模板
- PS-基本操作
- Unity3d 5.4-官方教程2之Space Shooter