首页
归档
留言
友链
广告合作
壁纸
更多
美女主播
Search
1
博瑞GE车机升级/降级
5,611 阅读
2
Mac打印机设置黑白打印
4,953 阅读
3
修改elementUI中el-table树形结构图标
4,896 阅读
4
Mac客户端添加腾讯企业邮箱方法
4,675 阅读
5
intelliJ Idea 2022.2.X破解
4,358 阅读
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
登录
/
注册
Search
标签搜索
Spring Boot
Java
Vue
Spring Cloud
Mac
MyBatis
WordPress
MacOS
asp.net
Element UI
Nacos
.Net
Spring Cloud Alibaba
MySQL
Mybatis-Plus
Typecho
jQuery
Java Script
IntelliJ IDEA
微信小程序
Laughing
累计撰写
627
篇文章
累计收到
1,421
条评论
首页
栏目
后端开发
HarmonyOS Next
Web前端
微信开发
开发辅助
App开发
数据库
随笔日记
页面
归档
留言
友链
广告合作
壁纸
美女主播
搜索到
224
篇与
的结果
2019-07-08
VSCode结合maven配置Java开发环境
这里主要介绍一下pom.xml文件的配置,防止遗忘。{message type="success" content="这里主要是配置了struts2的一个环境作为Demo"/}项目结构由于修改了默认的maven项目目录的存储结构,所以需要同步修改pom.xml文件,防止打包失败。简单说一下项目的结构src顶层主要用户存储开发相关的源文件target是intall生成的文件java是空文件夹,目前没用Net下面存放的java文件resources下面就配置了一个struts.xml文件WebContent用于配置jsp等静态文件pom.xml配置如下<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>Cc.LiSen</groupId> <artifactId>Cc.LiSen</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>Cc.LiSen Maven Webapp</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.apache.struts</groupId> <artifactId>struts2-core</artifactId> <version>2.5.1</version> </dependency> </dependencies> <build> <finalName>Cc.LiSen</finalName> <!--项目相关的所有资源路径列表,例如和项目相关的配置文件、属性文件,这些资源被包含在最终的打包文件里。 --> <resources> <resource> <!--描述了资源的目标路径。该路径相对target/classes目录(例如${project.build.outputDirectory})。 --> <!--举个例子,如果你想资源在特定的包里(org.apache.maven.messages),你就必须该元素设置为org/apache/maven/messages。 --> <!--然而,如果你只是想把资源放到源码目录结构里,就不需要该配置。 --> <!--是否使用参数值代替参数名。参数值取自properties元素或者文件里配置的属性,文件在filters元素里列出。 --> <filtering>true</filtering> <!--描述存放资源的目录,该路径相对POM路径 --> <directory>${project.basedir}\src\resources</directory> <!--包含的模式列表 --> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <!--排除的模式列表 如果<include>与<exclude>划定的范围存在冲突,以<exclude>为准 --> <excludes> <exclude>jdbc.properties</exclude> </excludes> </resource> </resources> <!--项目源码目录,当构建项目的时候,构建系统会编译目录里的源码。该路径是相对于pom.xml的相对路径。 --> <sourceDirectory>${basedir}\src\</sourceDirectory> <!--项目脚本源码目录,该目录和源码目录不同, 绝大多数情况下,该目录下的内容会被拷贝到输出目录(因为脚本是被解释的,而不是被编译的)。 --> <scriptSourceDirectory>${basedir}\src\scripts</scriptSourceDirectory> <plugins> <plugin> <artifactId>maven-war-plugin</artifactId> <configuration> <!--指定web.xml文件的位置--> <webXml>src\WebContent\WEB-INF\web.xml</webXml> <!--指定jsp等文件所在位置--> <warSourceDirectory>src\WebContent</warSourceDirectory> </configuration> </plugin> </plugins> </build> </project>
2019年07月08日
2,137 阅读
0 评论
0 点赞
2019-07-07
DotNet结合ajax实现分块上传
原理就不做介绍了,就是在前端先循环对文件进行分块,然后分别发送到后台,所有分块发送完成后,后台对文件进行合并。html代码<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <link href="../Scripts/layui/css/layui.css" rel="stylesheet" /> <link href="../Css/fileUpload.css" rel="stylesheet" /> <link href="../Css/UpLoadFile.css" rel="stylesheet" /> <link href="../Scripts/layui/layui_exts/dtree/dtree.css" rel="stylesheet" /> <link href="../Scripts/layui/layui_exts/dtree/font/dtreefont.css" rel="stylesheet" /> <script src="../Scripts/Jquery1.12.4/jquery-1.12.4.min.js"></script> <script src="../Scripts/layui/layui.js"></script> <script src="../JS/plupload.full.min.js" type="text/javascript"></script> <script src="../JS/jquery.base64.js" type="text/javascript"></script> <script src="../Scripts/bootstrap3.3.7/js/bootstrap.js"></script> <link href="../Scripts/bootstrap3.3.7/css/bootstrap.css" rel="stylesheet" /> <link href="../Scripts/layui/layui_exts/dtree/dtree.css" rel="stylesheet" /> <link href="../Scripts/layui/layui_exts/dtree/font/dtreefont.css" rel="stylesheet" /> <script> document.write("<script type='text/javascript' src='../JS/ImageServiceDemo.js?rnd=" + Math.random() + "'><\/script>"); </script> </head> <body> <div style="width:100%"> <div style="float:left;margin-right:0px;margin-left20px;border-color:aquamarine"> <ul id="imageTypesTree" class="dtree" data-id="0" style="width:300px;"></ul> </div> <div style="float:left;width:800px;"> <div style="text-align:center" class="form-horizontal"> <div class="layui-progress layui-progress-big" lay-showPercent="yes"> <div class="layui-progress-bar layui-bg-green" lay-percent="0%" id="uploadProgress" style="display:none;"></div> </div> <div class="form-group"> <input type="file" multiple id="file" onchange="javascript:onc();" /> </div> <div class="form-group"> <label for="lastname" class="col-md-2 control-label">计划内码</label> <div class="col-md-10"> <input type="text" class="form-control" id="jhid" placeholder="计划内码" value="f2617b63-264c-496d-a5de-14725c23941a"> </div> </div> <div class="form-group"> <label for="lastname" class="col-md-2 control-label">移交记录内码</label> <div class="col-md-10"> <input type="text" class="form-control" id="yjjlid" placeholder="计划内码" value="9e6b2a12-89a1-4b7c-81a9-3486aaad3474"> </div> </div> <div class="form-group"> <label for="name" class="col-sm-2 control-label">请选择档案类别</label> <div class="col-sm-10"> <select name="dassfl" id="dassfl" class="form-control"> <option value=""></option> <option value="td">土地</option> <option value="fwjzw">房屋建筑物</option> <option value="swzc">实物资产</option> <option value="fswzc">非实物资产</option> <option value="cw">财务</option> <option value="ry">人员</option> <option value="da">档案</option> <option value="wt">问题</option> </select> </div> </div> <div class="form-group"> <button class="layui-btn layui-btn-radius layui-btn-normal" type="button" onclick="sendRequest();" style="width:150px;">上传大文件</button> <button id="btnUpload" class="layui-btn layui-btn-radius layui-btn-normal" type="button" style="width:150px;">上传</button> <button id="getFilesInfo" class="layui-btn layui-btn-radius layui-btn-normal" type="button" style="width:150px;" onclick="getFilesInfo();">获取附件</button> </div> <div style="text-align:center;margin-top:25px;"> <div id="filelist"></div> </div> </div> </div> </div> </body> </html>js脚本var uploadFiles = new Array(); var layer; var dtree = null; var imageTypesTree = null; var selectTreeNodeId = ''; var BYTES_PER_CHUNK = 1024 * 1024 * 2; // 每个文件切片大小定为2MB . var slices; var totalSlices; $(function () { $("#btnUpload").click(function () { checkFileExist(Upload); }); layui.use('layer', function () { layer = layui.layer; }); getImageType(); $('#dassfl').change(function () { getImageType(); }); }) function AddFiles(files) { var errstr = ""; for (var i = 0; i < files.length; i++) { var filename = files[i].name; var isfind = false; for (var j = 0; j < uploadFiles.length; j++) { if (uploadFiles[j].name == filename) { isfind = true; break; } } var index1 = filename.lastIndexOf("."); var index2 = filename.length; var postf = filename.substring(index1 + 1, index2);//后缀名 var myarray = new Array('JPG', 'jpg', 'jpeg', 'JPEG', 'gif', 'GIF', 'png', 'PNG'); if (isfind == false) { uploadFiles.push(files[i]); } if (errstr != "") { layer.alert("文件格式错误:" + errstr); } } } function onc() { var files = document.getElementById("file").files; if (files.length < 0) { return; } AddFiles(files); } function Upload() { var param = dtree.getNowParam(imageTypesTree); if (JSON.stringify(param) == "{}") { layer.alert('请选择档案类别'); return; } var dalb = param.nodeId; var jhid = $('#jhid').val(); var yjjlid = $('#yjjlid').val(); var dassfl = $('#dassfl').val(); var files = document.getElementById("file").files; if (files.length <= 0) { alert('请先选择要上传的文件'); return; } if (uploadFiles.length <= 0) { alert('上传成功'); return; } var formData = new FormData(); formData.append("file", uploadFiles[0]); formData.append('jhid', jhid); formData.append('dassfl', dassfl); formData.append('dalb', dalb); formData.append('yjjlid', yjjlid); $.ajax({ url: "../Controller/ImageService.ashx?func=uploadimage", type: "POST", data: formData, processData: false, contentType: false,// 不设置内容类型 success: function (data) { debugger var result = JSON.parse(data); if (result.IsSuccess != "1") { alert(result.Msg); } uploadFiles.splice(0, 1); Upload(); }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.responseText); } }); } function checkFileExist(callBack) { var param = dtree.getNowParam(imageTypesTree); if (JSON.stringify(param) == "{}") { layer.alert('请选择档案类别'); return; } var dalb = param.nodeId; var jhid = $('#jhid').val(); var yjjlid = $('#yjjlid').val(); var dassfl = $('#dassfl').val(); var files = document.getElementById("file").files; if (files.length <= 0) { alert('请先选择要上传的文件'); return; } var fileExistCheckArr = new Array(); for (var i = 0; i < files.length; i++) { fileExistCheckArr.push(files[i].name); } $.ajax({ url: "../Controller/ImageService.ashx?func=checkimageexist", type: "POST", async: false, data: { 'jhid': jhid, 'dassfl': dassfl, 'dalb': dalb, 'yjjlid': yjjlid, 'fileNames': JSON.stringify(fileExistCheckArr) }, success: function (data) { debugger var result = JSON.parse(data); if (result.IsSuccess == "-1") { layer.confirm(result.Msg, { icon: 3, title: '提示' }, function (index) { if (index == 1) { layer.closeAll(); callBack(); } }); } else { callBack(); alert(result.Msg); } }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.responseText); } }); } function getFilesInfo() { var param = dtree.getNowParam(imageTypesTree); if (JSON.stringify(param) == "{}") { layer.alert('请选择档案类别'); return; } var dalb = param.nodeId; var jhid = 'f2617b63-264c-496d-a5de-14725c23941a'; var dalb = '581ef7f3-4737-4258-8915-8c86f7121903'; var yjjlid = '9e6b2a12-89a1-4b7c-81a9-3486aaad3474'; var dassfl = $('#dassfl').val(); if (dassfl == 'da') { jhid = 'f09fb1f1-f5f9-4fb9-aeed-2b03e2a50034'; dalb = '43aba81f-e803-4db1-8a5c-b626853ebf28'; yjjlid = ''; } $.ajax({ url: "../Controller/ImageService.ashx?func=getimage", type: "POST", async: false, data: { 'jhid': jhid, 'yjjlid': yjjlid, 'dassfl': dassfl }, success: function (data) { debugger var result = JSON.parse(data); if (result.IsSuccess == "-1") { } else { var filelistArr = JSON.parse(result.Data); $.each(filelistArr, function (index, value) { $("#filelist").append("<a href='javascript:void(0)' id='" + value.FileID + "' FileID='" + value.FileID + "' BillID='" + value.BillID + "' FileType='" + value.FileType + "' onclick='downLoadImage(this)'>" + value.FileName + "</a><span onclick='deletefile(this)'>删除</span><br/>"); }) } }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.responseText); } }); } function downLoadImage(obj) { var fileid = $(obj)[0].id; var filename = $(obj).text(); url = "../Controller/ImageService.ashx?func=downloadimage&fileid=" + fileid; var xhr = new XMLHttpRequest(); xhr.open("POST", url, true); xhr.responseType = "blob"; xhr.onload = function () { if (this.status == 200) { var blob = this.response; var reader = new FileReader(); reader.readAsDataURL(blob); reader.onload = function (e) { var a = document.createElement('a'); a.download = filename; a.href = e.target.result; document.body.appendChild(a); a.click(); document.body.removeChild(a); } } else { layer.alert('获取文件失败'); } }; xhr.send(); } function deletefile(obj) { var fileid = $(obj).prev("a").attr("FileID"); var BillID = $(obj).prev("a").attr("BillID"); var FileType = $(obj).prev("a").attr("FileType"); var filename = $(obj).prev("a").text(); var jhid = 'f2617b63-264c-496d-a5de-14725c23941a'; var dalb = '581ef7f3-4737-4258-8915-8c86f7121903'; var yjjlid = '9e6b2a12-89a1-4b7c-81a9-3486aaad3474'; var dassfl = $('#dassfl').val(); if (dassfl == 'da') { jhid = 'f09fb1f1-f5f9-4fb9-aeed-2b03e2a50034'; dalb = '43aba81f-e803-4db1-8a5c-b626853ebf28'; yjjlid = ''; } $.ajax({ url: "../Controller/ImageService.ashx?func=deleteimage", type: "POST", async: false, data: { 'fileid': fileid, 'filename': filename, 'jhid': jhid, 'yjjlid': yjjlid, 'dassfl': dassfl, 'dalb': dalb }, success: function (data) { debugger var result = JSON.parse(data); if (result.IsSuccess == "-1") { alert(result.Data); } else { alert('删除成功'); } }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.responseText); } }); } function getImageType() { var jhid = $('#jhid').val(); var yjjlid = $('#yjjlid').val(); var dassfl = $('#dassfl').val(); var step = 'sjcj'; debugger $.ajax({ url: "../Controller/ZCJSMainPage.ashx?func=getimagetypetree", type: "POST", data: { step: step, dassfl: dassfl, jhid: jhid }, success: function (data) { debugger var result = JSON.parse(data); if (result.success == "-1") { layer.alert(result.msg); } else { layui.config({ base: '../Scripts/layui/lay/modules/' //配置 layui 第三方扩展组件存放的基础目录 }).extend({ dtree: 'dtree' }).use(['element', 'layer', 'dtree'], function () { dtree = layui.dtree, layer = layui.layer, $ = layui.$; // 初始化树 imageTypesTree = dtree.render({ elem: "#imageTypesTree", data: JSON.parse(result.data) // 使用data加载 }); // 绑定节点点击 dtree.on("node('imageTypesTree')", function (obj) { selectTreeNodeId = obj.param.nodeId; GetFilesInfoDATree(jhid, dassfl, '', step, obj.param.nodeId); }); }); } }, error: function (XMLHttpRequest, textStatus, errorThrown) { layer.alert(XMLHttpRequest.responseText); } }); } //发送请求 function sendRequest() { var param = dtree.getNowParam(imageTypesTree); if (JSON.stringify(param) == "{}") { layer.alert('请选择档案类别'); return; } var dalb = param.nodeId; var jhid = $('#jhid').val(); var yjjlid = $('#yjjlid').val(); var dassfl = $('#dassfl').val(); var files = document.getElementById("file").files; while (uploadFiles.length > 0) { var blob = uploadFiles[0]; var start = 0; var end; var index = 0; var guid = newGuid(); console.log(guid); // 计算文件切片总数 slices = Math.ceil(blob.size / BYTES_PER_CHUNK); totalSlices = slices; while (start < blob.size) { end = start + BYTES_PER_CHUNK; if (end > blob.size) { end = blob.size; } if (uploadFile(blob, index, start, end, guid, jhid, yjjlid, dassfl, dalb) < 0) { break; } start = end; index++; if (index >= totalSlices) { $("#uploadProgress").css('display', 'none'); } } uploadFiles.splice(0, 1); } } //上传文件 function uploadFile(blob, index, start, end, guid, jhid, yjjlid, dassfl, dalb) { var formData; var chunk; var sliceIndex = blob.name + index; chunk = blob.slice(start, end);//切割文件 formData = new FormData(); formData.append("FileName", chunk, sliceIndex); formData.append("filename", blob.name); formData.append("chunk", index); formData.append("sliceIndex", sliceIndex); formData.append("chunks", totalSlices); formData.append('jhid', jhid); formData.append('dassfl', dassfl); formData.append('dalb', dalb); formData.append('yjjlid', yjjlid); formData.append('guid', guid); $.ajax({ url: '../Controller/ImageService.ashx?func=uploadimage', type: "POST", data: formData, processData: false, contentType: false,// 不设置内容类型 success: function (data) { var result = JSON.parse(data); var currentChunk = parseInt(data.Msg); if (result.IsSuccess == "0") { var percent = parseInt((currentChunk / totalSlices) * 100); $("#uploadProgress").css('display', 'block').attr('lay-percent', percent.toFixed() + '%'); return 0; } else if (result.IsSuccess == "1") { layer.alert('上传完成'); return 1; } else { layer.alert('上传失败,原因为:' + result.Msg); return -1; } }, error: function (XMLHttpRequest, textStatus, errorThrown) { alert(XMLHttpRequest.responseText); } }); } function newGuid() { return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) { var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16); }); }一般处理程序#region 上传影像文件 /// <summary> /// 上传影像 /// </summary> /// <param name="context"></param> public void UploadImage(HttpContext context) { string jhid = string.Empty;//计划ID string dassfl = string.Empty;//档案所属分类 string yjjlid = string.Empty;//移交记录ID string dalb = string.Empty;//档案类别 string rwjd = string.Empty;//任务阶段 HttpFileCollection files = context.Request.Files; ;//要检查的文件列表 string result = string.Empty; if (!context.Request.Params.AllKeys.Contains("jhid")) { result += "计划ID不能为空;"; } if (!context.Request.Params.AllKeys.Contains("dassfl")) { result += "所属分类不能为空;"; } if (!context.Request.Params.AllKeys.Contains("dalb")) { result += "附件类别不能为空;"; } jhid = context.Request.Params["jhid"]; dassfl = ConvertDassfl2Lower(context.Request.Params["dassfl"]); dalb = context.Request.Params["dalb"]; if (context.Request.Params.AllKeys.Contains("yjjlid")) { yjjlid = context.Request.Params["yjjlid"]; } if (context.Request.Params.AllKeys.Contains("rwjd")) { rwjd = context.Request.Params["rwjd"]; } if (context.Request.Form.AllKeys.Contains("chunk")) { //取得chunk和chunks int chunk = Convert.ToInt32(context.Request.Form["chunk"]);//当前分片在上传分片中的顺序(从0开始) int chunks = Convert.ToInt32(context.Request.Form["chunks"]);//总分片数 string fileName = context.Request.Form["filename"];//文件实际名称 string guid = context.Request.Form["guid"]; ; //根据GUID创建用该GUID命名的临时文件夹 string folder = fileSavePath + "\\" + guid + "\\"; string path = folder + chunk; //建立临时传输文件夹 if (!Directory.Exists(Path.GetDirectoryName(folder))) { Directory.CreateDirectory(folder); } FileStream addFile = new FileStream(path, FileMode.Append, FileAccess.Write); BinaryWriter AddWriter = new BinaryWriter(addFile); //获得上传的分片数据流 HttpPostedFile file = context.Request.Files[0]; Stream stream = file.InputStream; BinaryReader TempReader = new BinaryReader(stream); //将上传的分片追加到临时文件末尾 AddWriter.Write(TempReader.ReadBytes((int)stream.Length)); //关闭BinaryReader文件阅读器 TempReader.Close(); stream.Close(); AddWriter.Close(); addFile.Close(); TempReader.Dispose(); stream.Dispose(); AddWriter.Dispose(); addFile.Dispose(); //合并文件 ProcessRequestFiles(guid, fileName, chunks, jhid, dassfl, yjjlid, dalb, rwjd); } else { if (files.Count <= 0) { result += "文件信息不能为空;"; } if (!string.IsNullOrEmpty(result)) { ResponseInfo responseInfo = new ResponseInfo { IsSuccess = "-1", Msg = result.TrimEnd(';'), Data = "" }; context.Response.Write(JsonConvert.SerializeObject(responseInfo)); } else//执行判断 { ResponseInfo responseInfo = new ResponseInfo(); string msg = string.Empty; responseInfo.IsSuccess = ImageServiceCore.CreateInstance().UploadImage(jhid, dassfl, yjjlid, dalb, files, out msg); responseInfo.Msg = msg; context.Response.Write(JsonConvert.SerializeObject(responseInfo)); } } } #endregion private void ProcessRequestFiles(string guid, string fileName, int chunks, string jhid, string dassfl, string yjjlid, string dalb, string rwjd) { HttpContext context = System.Web.HttpContext.Current; context.Response.ContentType = "text/plain"; string sourcePath = fileSavePath + "\\" + guid + "\\";//源数据文件夹 string targetPath = fileSavePath + "\\" + guid + "\\" + fileName;//合并后的文件 DirectoryInfo dicInfo = new DirectoryInfo(sourcePath); ResponseInfo responseInfo = new ResponseInfo(); try { if (Directory.Exists(sourcePath)) { FileInfo[] files = dicInfo.GetFiles(); if (files.Length != chunks) { responseInfo = new ResponseInfo { IsSuccess = "0", Msg = "", Data = "" }; context.Response.Write(JsonConvert.SerializeObject(responseInfo)); return; } foreach (FileInfo file in files.OrderBy(f => int.Parse(f.Name))) { FileStream addFile = new FileStream(targetPath, FileMode.Append); BinaryWriter AddWriter = new BinaryWriter(addFile); //获得上传的分片数据流 Stream stream = file.Open(FileMode.Open); BinaryReader TempReader = new BinaryReader(stream); //将上传的分片追加到临时文件末尾 AddWriter.Write(TempReader.ReadBytes((int)stream.Length)); //关闭BinaryReader文件阅读器 TempReader.Close(); stream.Close(); AddWriter.Close(); addFile.Close(); TempReader.Dispose(); stream.Dispose(); AddWriter.Dispose(); addFile.Dispose(); } using (FileStream fileStream = new FileStream(targetPath, FileMode.Open)) { string msg = string.Empty; responseInfo.IsSuccess = ImageServiceCore.CreateInstance().UploadImage(jhid, dassfl, yjjlid, dalb, fileStream, fileName, rwjd, out msg); responseInfo.Msg = msg; responseInfo.Data = chunks.ToString(); } //删除文件夹 string delPath = fileSavePath + "\\" + guid; if (Directory.Exists(delPath)) { Directory.Delete(delPath, true); } context.Response.Write(JsonConvert.SerializeObject(responseInfo)); } else { responseInfo = new ResponseInfo { IsSuccess = "-1", Msg = "获取存储目录失败", Data = "" }; context.Response.Write(JsonConvert.SerializeObject(responseInfo)); } } catch (Exception ex) { responseInfo = new ResponseInfo { IsSuccess = "-1", Msg = ex.Message, Data = "" }; context.Response.Write(JsonConvert.SerializeObject(responseInfo)); } }结束。
2019年07月07日
1,152 阅读
0 评论
1 点赞
2019-05-30
WebApi JSONP的支持
最近遇到一个问题,在js中通过ajax访问webapi,出现了跨域的问题就把ajax的datatype改成jsonp,但是随之而来还有其他问题,就是paraserror = 0解决方法:在NuGet中下载webapi对jsonp的支持在Global中添加GlobalConfiguration.Configuration.AddJsonpFormatter(GlobalConfiguration.Configuration.Formatters.JsonFormtter, "callback");这样服务端就算是配好了!ajax调用示例:$.ajax({ url: "http://localhost:37262/api/door", type: "get", dataType: 'JSONP', jsonp:"callback", success: function (data) { console.log(data); }, });
2019年05月30日
1,481 阅读
0 评论
0 点赞
2019-05-21
Asp.NetCore MVC控制器分离
DotNetCore默认创建的项目,控制器是放到Controller文件夹下面,为了实现项目松耦合,我们可以见控制器分离到单独的类库项目中。创建控制器类库如上图,我这里创建了一个名为Cn.Com.DotNetCore.Controllers的类库项目,单独用于存储控制器。修改startup.cs类修改startup.cs类中的ConfigureServices方法,修改如下代码var mall = Assembly.Load(new AssemblyName("Cn.Com.DotNetCore.Controllers")); //类库的程序集名称 services.AddMvc().AddApplicationPart(mall).SetCompatibilityVersion(CompatibilityVersion.Version_2_2); 至此,就实现了控制器的分离。
2019年05月21日
1,290 阅读
0 评论
1 点赞
2019-05-17
普通解决方案增加webapi支持
添加程序集System.Net.Http System.Net.Http.Formatting System.Web.Http System.Web.Http.Common System.Web.Http.WebHost增加全局配置文件Global.asaxusing System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Http; using System.Web.Mvc; using System.Web.Routing; using System.Web.Security; using System.Web.SessionState; namespace WebApplication4 { public class Global : System.Web.HttpApplication { protected void Application_Start(object sender, EventArgs e) { AreaRegistration.RegisterAllAreas(); RouteTable.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{id}", defaults: new { id = RouteParameter.Optional }); } protected void Session_Start(object sender, EventArgs e) { } protected void Application_BeginRequest(object sender, EventArgs e) { } protected void Application_AuthenticateRequest(object sender, EventArgs e) { } protected void Application_Error(object sender, EventArgs e) { } protected void Session_End(object sender, EventArgs e) { } protected void Application_End(object sender, EventArgs e) { } } }
2019年05月17日
1,196 阅读
0 评论
1 点赞
2019-05-05
jsp中文乱码问题
初学JSP,尤其是Tomcat环境,经常会因为中文汉字字符集设置问题导致中文乱码,本文就这一问题提出解决方案,解决中文乱码问题,供各位参考,我采用的方案是统一字符集至UTF-8,同时避免GB2312所带来的中文字符集不够用的隐患,需注意的地方有三点,默认情况下是英文字符集。Tomcat 的 server.xml 文件,设置服务器端口工作方式Servlet 和 JavaBean 对字符串字符集处理的统一JSP页面的字符集统一完成这三点统一,中文想乱码都难,如果使用MySQL的话,数据表也需要做UTF-8统一。修改Tomcat的server.xml文件,该文件位于 tomcat/conf,红色部分为添加部分,也就是当前使用的HTTP端口的连接方式的设置。找到Connector 标签,使 Tomcat 服务器以UTF-8模式进行工作,从底层对乱码进行处理,修改如下:<Connector URIEncoding="utf-8" port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 运行代码内设置如下:JavaBean 和 Servlet 内需要处理中文的地方之前,或者所有函数最前端加上request.setCharacterEncoding ("UTF-8"); response.setCharacterEncoding ("UTF-8");避免在 JavaBean 和 Servlet 内出现汉字乱码。JSP代码中的 JAVA 字符编码设置,在页面上对乱码进行处理。<%@page contentType="text/html"%> <%@page pageEncoding="UTF-8"%>红色为制定JSP处理字符采用UTF-8编码处理方式。<div class="dp-highlighter nogutter"><div class="bar"></div><ol start="1" class="dp-j"><li class="alt"><span><span><%request.setCharacterEncoding (</span><span class="string">"UTF-8"</span><span>);%> </span></span></li></ol></div>JSP内JAVA代码设定接收参数为UTF-8编码JSP 内 HTML 头的编码设置,页面处理以UTF-8,避免显示乱码。<form action=index.jsp method="post"><h3>Please Input Your Name:</h3> <input type="text" size="30" name="中文名字" value="" > <input type=submit value="提交"> </form>接收代码如下:<% // 通过二进制传递的参数,因为UTF-8的设置,无须转换,直接中文操作,而不会出现乱码。 String temp1 = request.getParameter ("yourname"); …… %>采用get方式略有不同,若只采用以上设定,遇中文参数,因编码不同,会导致部分文字信息丢失,所以在提交前务必进行编码,这里用到两个函数java.net.URLDecoder.decode 和java.net.URLDecoder.encode,分别是编码和解码。<a href=" <%=request.getContextPath()%>/index.jsp?传递的参数名= <%=java.net.URLEncoder.encode (传递的汉字变量,"UTF-8")%>"> <%=超链接热点显示内容%> </a>作为参数传递的中文,由 java.net.URLEncoder.encode函数将要发送的变量解析为16进制数字编码,进行URL传递,接收代码如下:<%String str = request.getParameter ("传递的参数名");%> 由此,获得参数后的 str 内将是正确的中文信息,完全避免了乱码的显示。可用 java.net.URLDecoder.decode 函数例如<% String str1 = java.net.URLDecoder.decode(request.getParameter("传递的参数名"),"UTF-8"); %>
2019年05月05日
1,123 阅读
0 评论
1 点赞
2019-02-27
asp.net core视图组件
what试图组件是ASP.NET Core MVC中的新特性,类似于部分视图,但是它更加强大。驶入组件不使用模型绑定,并且仅依赖于调用它时所提供的数据。how创建视图组件类using Microsoft.AspNetCore.Mvc; using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; namespace Web.ViewComponents { [ViewComponent(Name = "TopicRankList")] public class TopicRankList : ViewComponent { public IViewComponentResult Invoke() { return View(); } } } 视图搜索路径视图组件的默认视图名称是Default,这意味着你的视图文件通常名为Default.cshtml,可以在创建视图组件结果或调用View方法时指定其他视图名称。视图组件运行时会在以下路径中搜索视图:Views//Components// Views/Shared/Components//所以根据创建的类,我们需要在Views/Shared/Components/TopicRankList文件夹中创建Default.cshtml文件。@{ ViewData["Title"] = "Default"; } <h1>Default</h1>调用视图@await Component.InvokeAsync("TopicRankList")
2019年02月27日
1,134 阅读
0 评论
1 点赞
2019-02-26
ASP.NET Core之NLog使用
添加NLog插件修改NLog配置文件可以通过Nuget安装,NLogConfigure手工添加NLog.Configure文件,如下using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Logging; using NLog; using Web.Models; namespace Web.Controllers { public class HomeController : Controller { private readonly ILogger<HomeController> _log; public HomeController(ILogger<HomeController> log) => _log = log; static Logger logger = LogManager.GetCurrentClassLogger(); public IActionResult Index() { logger.Info("测试日志乱码"); return View(); } public IActionResult Privacy() { return View(); } [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); } } }修改StartUp.cs文件public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { app.UseRequestIP(); loggerFactory.AddNLog(); env.ConfigureNLog("NLog.configure"); app.Use(async (context, next) => { context.Items["IsVerified"] = true; await next.Invoke(); }); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseDatabaseErrorPage(); } else { app.UseExceptionHandler("/Error"); } app.UseStaticFiles(); //app.UseDirectoryBrowser(); app.UseAuthentication(); app.UseSession(); app.UseMvc(routes => { routes.MapRoute( name:"area", template: "{area:exists}/{controller=Home}/{action=Index}/{id?}" ); routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }使用NLogpublic class HomeController : Controller { private readonly ILogger<HomeController> _log; public HomeController(ILogger<HomeController> log) => _log = log; static Logger logger = LogManager.GetCurrentClassLogger(); public IActionResult Index() { logger.Info("测试日志乱码"); return View(); } }
2019年02月26日
1,270 阅读
0 评论
2 点赞
2018-12-11
根据WSDL文件(java Web Service)生成.cs文件
我们添加webService引用,一般是通过 添加服务引用完成的,其实 添加服务引用 在背后为我们生成了代理类。我们手动生成代理类方法:通过java Web Service,生成wsdl文件:1.1 IE地址栏中输入wsdl的url 例如:http://webservice.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl1.2 通过IE的 【文件】-->【另存为】-->文件名中输入 UserService55.wsdl, 保存类型: 所有文件(.) ;开始菜单-->Microsoft Visual Studio 2010 -->Visual Studio Tools-->Visual Studio Command Prompt (2010) ;输入wsdl wsdl文件路径(D:\UserService55.wsdl) /out:UserService55.cs,cs文件生成在 Microsoft Visual Studio 10.0\VC\目录中;
2018年12月11日
1,065 阅读
0 评论
0 点赞
2018-12-08
AsEnumerable方法找不到
错误提示'System.Data.DataTable'不包含'AsEnumerable'的定义,并且找不到可接受类型为'System.Data.DataTable'的第一个参数的扩展方法'AsEnumerable'(是否缺少 using 指令或程序集引用?)解决添加引用'System.Data.DataSetExtensions'解决
2018年12月08日
1,045 阅读
0 评论
0 点赞
2018-10-24
使用NPOI操作Excel时设置超链接和文字颜色
HSSFWorkbook hssfworkbook = new HSSFWorkbook();//创建HSSFWorkbook ISheet sheet = hssfworkbook.CreateSheet("sheet1");//创建工作表 ICell cell = sheet.CreateRow(0).CreateCell(0);//创建单元格 #region 设置超链接 cell.SetCellValue("链接");//设置显示文本 HSSFHyperlink link = new HSSFHyperlink(HyperlinkType.URL);//建一个HSSFHyperlink实体指明链接类型为URL(这里是枚举,可以根据需求自行更改) link.Address = "http://blog.csdn.net/shiershilian";//给HSSFHyperlink的地址赋值 cell.Hyperlink = link;//将链接方式赋值给单元格的Hyperlink即可将链接附加到单元格上 #endregion #region 设置字体 IFont font = hssfworkbook.CreateFont();//创建字体样式 font.Color = HSSFColor.BLUE.Index;//设置字体颜色 ICellStyle style = hssfworkbook.CreateCellStyle();//创建单元格样式 style.SetFont(font);//设置单元格样式中的字体样式 cell.CellStyle = style;//为单元格设置显示样式 #endregion
2018年10月24日
1,231 阅读
0 评论
0 点赞
2018-10-21
解决Oracle in 超过1000个问题 C#拼接字符串
private string getOracleSQLIn(string[] ids, string field) { int count = Math.Min(ids.Length, 1000); int len = ids.Length; int size = len % count; if (size == 0) { size = len / count; } else { size = (len / count) + 1; } StringBuilder builder = new StringBuilder(); for (int i = 0; i < size; i++) { int fromIndex = i * count; int toIndex = Math.Min(fromIndex + count, len); string productId = string.Join("','", getArrayValues(fromIndex, toIndex, ids).ToArray()); if (i != 0) { builder.Append(" or "); } builder.Append(field).Append(" in ('").Append(productId).Append("')"); } return builder.ToString(); } public List<string> getArrayValues(int fromindex, int toindex, string[] array) { List<string> listret = new List<string>(); for (int i = fromindex; i < toindex; i++) { listret.Add(array[i]); } return listret; }
2018年10月21日
1,124 阅读
0 评论
0 点赞
1
...
14
15
16
...
19