itoo在线编辑——mongo学习1

2024-08-27 15:18
文章标签 学习 编辑 在线 mongo itoo

本文主要是介绍itoo在线编辑——mongo学习1,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、前台

1. jsp页面

         html标签里面要有个type 为“file”的input。例子如下:

    <div style="padding-top: 8px;"><p class="ui-tips">上传头像会自动生成头像缩略图片,您也可以拖动大图的裁剪区域,调整缩图内容。</p><p class="ui-tips">支持JPG、GIF、PNG等图片格式推荐尺寸:180*180像素</p><input type="file" name="fileCoursePoster" οnchange="uploadCoursePoster();" id="fileCoursePoster"/><span id="errorCoursePoster" style="color: red; display: none;">请上传图片!</span><input type="hidden" id="imageType" name="imageType"></div><code><span style="color:#93a1a1;"><span></span></span><span style="color:#48484c;"><span></span></span><span style="color:#93a1a1;"><span></span></span></code>

 

引用的插件:ajaxfileupload.js

jQuery.extend({ {createUploadIframe: function(id, uri)
{
//create framevar frameId ='jUploadFrame'+ id;var iframeHtml ='<iframe id="'+ frameId +'" name="'+ frameId +'" style="position:absolute; top:-9999px; left:-9999px"';
if(window.ActiveXObject)
{
if(typeof uri=='boolean'){iframeHtml +=' src="'+'javascript:false'+'"';}
elseif(typeof uri=='string'){iframeHtml +=' src="'+ uri +'"';}
}iframeHtml +=' />';jQuery(iframeHtml).appendTo(document.body);return jQuery('#'+ frameId).get(0);
},createUploadForm: function(id,fileElementId,data,fileElement)
{
//create form	var formId ='jUploadForm'+ id;var fileId ='jUploadFile'+ id;var form = jQuery('<form  action="" method="POST" name="'+ formId +'" id="'+ formId +'" enctype="multipart/form-data"></form>');
if(data)
{
for(var i in data)
{jQuery('<input type="hidden" name="'+ i +'" value="'+ data[i]+'" />').appendTo(form);
}
}var oldElement;
if(fileElement ==null)oldElement = jQuery('#'+ fileElementId);
elseoldElement = fileElement;var newElement = jQuery(oldElement).clone();jQuery(oldElement).attr('id', fileId);jQuery(oldElement).before(newElement);jQuery(oldElement).appendTo(form);
//set attributesjQuery(form).css('position','absolute');jQuery(form).css('top','-1200px');jQuery(form).css('left','-1200px');jQuery(form).appendTo('body');
return form;
},ajaxFileUpload: function(s){
// TODO introduce global settings, allowing the client to modify them for all requests, not only timeout		s = jQuery.extend({}, jQuery.ajaxSettings, s);var id =newDate().getTime()var form = jQuery.createUploadForm(id, s.fileElementId,(typeof(s.data)=='undefined'?false:s.data),s.fileElement);var io = jQuery.createUploadIframe(id, s.secureuri);var frameId ='jUploadFrame'+ id;var formId ='jUploadForm'+ id;
// Watch for a new set of requests
if( s.global &&! jQuery.active++)
{jQuery.event.trigger("ajaxStart");
}var requestDone =false;
// Create the request objectvar xml ={}
if( s.global )jQuery.event.trigger("ajaxSend",[xml, s]);
// Wait for a response to come backvar uploadCallback = function(isTimeout)
{var io = document.getElementById(frameId);
try
{
if(io.contentWindow)
{xml.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerText:null;xml.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document;
}elseif(io.contentDocument)
{xml.responseText = io.contentDocument.document.body?io.contentDocument.document.body.innerText:null;xml.responseXML = io.contentDocument.document.XMLDocument?io.contentDocument.document.XMLDocument:io.contentDocument.document;
}
}catch(e)
{jQuery.handleError(s, xml,null, e);
}
if( xml || isTimeout =="timeout")
{requestDone =true;var status;
try{status = isTimeout !="timeout"?"success":"error";
// Make sure that the request was successful or notmodified
if( status !="error")
{
// process the data (runs the xml through httpData regardless of callback)var data = jQuery.uploadHttpData( xml, s.dataType );
// If a local callback was specified, fire it and pass it the data
if( s.success )s.success( data, status );
// Fire the global callback
if( s.global )jQuery.event.trigger("ajaxSuccess",[xml, s]);
}elsejQuery.handleError(s, xml, status);
}catch(e)
{status ="error";jQuery.handleError(s, xml, status, e);
}// The request was completed
if( s.global )jQuery.event.trigger("ajaxComplete",[xml, s]);// Handle the global AJAX counter
if( s.global &&!--jQuery.active )jQuery.event.trigger("ajaxStop");// Process result
if( s.complete )s.complete(xml, status);jQuery(io).unbind()setTimeout(function()
{try
{jQuery(io).remove();jQuery(form).remove();
}catch(e)
{jQuery.handleError(s, xml,null, e);
}},100)xml =null}
}
// Timeout checker
if( s.timeout >0)
{setTimeout(function(){
// Check to see if the request is still happening
if(!requestDone ) uploadCallback("timeout");
}, s.timeout);
}
try
{var form = jQuery('#'+ formId);jQuery(form).attr('action', s.url);jQuery(form).attr('method','POST');jQuery(form).attr('target', frameId);
if(form.encoding)
{jQuery(form).attr('encoding','multipart/form-data');
}
else
{jQuery(form).attr('enctype','multipart/form-data');
}jQuery(form).submit();}catch(e)
{jQuery.handleError(s, xml,null, e);
}jQuery('#'+ frameId).load(uploadCallback);
return{abort: function(){
try
{jQuery('#'+ frameId).remove();jQuery(form).remove();
}
catch(e){}
}};
},uploadHttpData: function( r, type ){var data =!type;data = type =="xml"|| data ? r.responseXML: r.responseText;
// If the type is "script", eval it in global context
if( type =="script"){jQuery.globalEval( data );
}elseif( type =="json"){eval("data = "+ data );
}elseif(type =="html"){jQuery("<div>").html(data).evalScripts();
}
return data;
},handleError: function( s, xml, status, e ){
// If a local callback was specified, fire it
if( s.error )s.error( xml, status, e );// Fire the global callback
if( s.global )jQuery.event.trigger("ajaxError",[xml, s, e]);
}
});


js

    $.ajaxFileUpload({url : ctx+"/media/uploadImages",//			secureuri : false,//安全type:"Post",dataType:'json',data :{"questionMainId": getQuestionMainId,"imageType": imageType,"pictureID":pictureID},fileElementId :"fileCoursePoster",// 文件选择框的id属性success : function(data, status){alert("上传成功!");},error : function(XMLHttpRequest, textStatus, errorThrown){alert("上传失败!");}});


后台

1.封装的java类


    /*** mongo底层代码,由于底层代码没有我需要的东西,只能在这里重新写一遍了* 十一期  谭倩倩* @MethodName	: getMongo* @Description	: 获取数据连接* @return 返回mongon*/privateMongo getMongo(){Mongo mongo=null;try{mongo =newMongo("192.168.22.246",27017);}catch(Exception e){e.printStackTrace();}return mongo;}/*** mongo底层代码,由于底层代码没有我需要的东西,只能在这里重新写一遍了* 十一期  谭倩倩*  @MethodName	: uploadFile* @Description	: 上传文件* @param file :文件,File类型* @param delPictureID	:唯一标示文件,可根据id查询到文件.必须设置* @param dbName :库名,每个系统使用一个库* @param collectionName:集合名,如果传入的集合名库中没有,则会自动新建并保存* @param map:放入你想要保存的属性,例如文件类型(“congtentType”".jpg"),字符串类型,区分大小写,如果属性没有的话会自动创建并保存*/publicvoid uploadFileByObjectId(File file ,ObjectId delPictureID,String dbName,String collectionName,LinkedHashMap<String,Object> map){//把mongoDB的数据库地址配置在外部。try{Mongo mongo =getMongo();//每个系统用一个库DB db= mongo.getDB(dbName);System.out.println(db.toString());//每个库中可以分子集GridFS gridFS=newGridFS(db,collectionName);// 创建gridfsfile文件GridFSFile gridFSFile = gridFS.createFile(file);//将文件属性设置到gridFSFile.put("_id", delPictureID);//循环设置的参数if(map !=null&& map.size()>0){for(String key : map.keySet()){gridFSFile.put(key, map.get(key));}}//保存上传gridFSFile.save();}catch(Exception e){e.printStackTrace();}}

2.Controller代码

 

    /*** 十一期 谭倩倩* 上传图片* @param filePhone* @param request* @param response* @throws IOException*/@RequestMapping(value ="media/uploadImages", produces ="text/plain;charset=UTF-8")@ResponseBodypublicvoid uploadImages(HttpServletRequest request,HttpServletResponse response)throwsIOException{QuestionMain enQuestionMain=null;String getPath=null;String dataBaseName =(String) request.getSession().getAttribute(CloudContext.DatabaseName)+DataBaseClass.getExamdatabase();MultipartHttpServletRequest multipartRequest=(MultipartHttpServletRequest)request;String fileName="";String questionMainId=request.getParameter("questionMainId");ObjectId pictureID=ObjectId.get();String delPictureID=pictureID.toString();System.out.println(delPictureID);for(Iterator it=multipartRequest.getFileNames();it.hasNext();){String key=(String)it.next();MultipartFile nulfile=multipartRequest.getFile(key);fileName=nulfile.getOriginalFilename();//File getFilePath=new File(fileName);String logoRealPathDir = request.getSession().getServletContext().getRealPath(fileName);File localFile =newFile(logoRealPathDir);LinkedHashMap map =newLinkedHashMap();String mongoDbName ="exam";String collectionName ="aa";MongoUtil mongoUtil =newMongoUtil();nulfile.transferTo(localFile);try{this.uploadFileByObjectId(localFile, pictureID, mongoDbName, collectionName,map);System.out.println("导入图片成功!!");}catch(Exception e){System.out.println("导入图片失败!!");}try{enQuestionMain=questionMainBean.queryQuestionMainById(questionMainId, dataBaseName);System.out.println("查询题干成功");enQuestionMain.setImageName(delPictureID);enQuestionMain.setDataBaseName(dataBaseName);boolean flag=paperMainBean.updateQuestionMain(enQuestionMain);if(flag==true){System.out.println("更新成功");}}catch(Exception e){System.out.println("更新失败");}getPath="http://192.168.22.248/exam/"+pictureID;;}jacksonJson.beanToJson(response,getPath);}

这篇关于itoo在线编辑——mongo学习1的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1112035

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

电力系统中的A类在线监测装置—APView400

随着电力系统的日益复杂和人们对电能质量要求的提高,电能质量在线监测装置在电力系统中得到广泛应用。目前,市场上的在线监测装置主要分为A类和B类两种类型,A类和B类在线监测装置主要区别在于应用场景、技术参数、通讯协议和扩展性。选择时应根据实际需求和应用场景综合考虑,并定期维护和校准。电能质量在线监测装置是用于实时监测电力系统中的电能质量参数的设备。 APView400电能质量A类在线监测装置以其多核

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识