WEBAPI 返回一个html页面

public HttpResponseMessage getHtml() { string uri = "http://docs.google.com/gview?embedded=true&url=www.pdf995.com/samples/pdf.pdf"; WebClient wc = new WebClient(); Stream resStream = wc.OpenRead(uri); StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default); string ContentHtml = sr.ReadToEnd(); var response = new HttpResponseMessage(); response.Content = new StringContent(ContentHtml); response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html"); return response; } ———————————————— 版权声明:本文为CSDN博主「小咪蜂」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/xiaomifengmaidi1/java/article/details/84665109

龙生   21 Apr 2020
View Details

ASP.NET Web API实现简单的文件下载与上传

ASP.NET Web API实现简单的文件下载与上传。首先创建一个ASP.NET Web API项目,然后在项目下创建FileRoot目录并在该目录下创建ReportTemplate.xlsx文件,用于下面示例的使用。 1、文件下载 示例:实现报表模板文件下载功能。 1.1 后端代码

  1.2 前端代码

2、文件上传 示例:实现上传报表文件功能。 2.1 后端代码

  2.2 前端代码

  from:https://blog.csdn.net/pan_junbiao/article/details/84065952

龙生   21 Apr 2020
View Details

各种文件对应的MIMEType

由上可见,MIME_MapTable是所有文件的后缀名所对应的MIME类型的一个String数组: Java代码 final String[][] MIME_MapTable={ //{后缀名,MIME类型} {".3gp",    "video/3gpp"}, {".apk",    "application/vnd.android.package-archive"}, {".asf",    "video/x-ms-asf"}, {".avi",    "video/x-msvideo"}, {".bin",    "application/octet-stream"}, {".bmp",    "image/bmp"}, {".c",  "text/plain"}, {".class",  "application/octet-stream"}, {".conf",   "text/plain"}, {".cpp",    "text/plain"}, {".doc",    "application/msword"}, {".docx",   "application/vnd.openxmlformats-officedocument.wordprocessingml.document"}, {".xls",    "application/vnd.ms-excel"}, {".xlsx",   "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}, {".exe",    "application/octet-stream"}, {".gif",    "image/gif"}, {".gtar",   "application/x-gtar"}, {".gz", "application/x-gzip"}, {".h",  "text/plain"}, {".htm",    "text/html"}, {".html",   "text/html"}, {".jar",    "application/java-archive"}, {".java",   "text/plain"}, {".jpeg",   "image/jpeg"}, {".jpg",    "image/jpeg"}, {".js", "application/x-javascript"}, {".log",    "text/plain"}, {".m3u",    "audio/x-mpegurl"}, {".m4a",    "audio/mp4a-latm"}, {".m4b",    "audio/mp4a-latm"}, {".m4p",    "audio/mp4a-latm"}, {".m4u",    "video/vnd.mpegurl"}, {".m4v",    "video/x-m4v"}, {".mov",    "video/quicktime"}, {".mp2",    "audio/x-mpeg"}, {".mp3",    "audio/x-mpeg"}, {".mp4",    "video/mp4"}, {".mpc",    "application/vnd.mpohun.certificate"}, {".mpe",    "video/mpeg"}, {".mpeg",   "video/mpeg"}, {".mpg",    "video/mpeg"}, {".mpg4",   "video/mp4"}, {".mpga",   "audio/mpeg"}, {".msg",    "application/vnd.ms-outlook"}, {".ogg",    "audio/ogg"}, {".pdf",    "application/pdf"}, {".png",    "image/png"}, {".pps",    "application/vnd.ms-powerpoint"}, {".ppt",    "application/vnd.ms-powerpoint"}, {".pptx",   "application/vnd.openxmlformats-officedocument.presentationml.presentation"}, {".prop",   "text/plain"}, {".rc", "text/plain"}, {".rmvb",   "audio/x-pn-realaudio"}, {".rtf",    "application/rtf"}, {".sh", "text/plain"}, {".tar",    "application/x-tar"}, {".tgz",    "application/x-compressed"}, {".txt",    "text/plain"}, {".wav",    "audio/x-wav"}, {".wma",    "audio/x-ms-wma"}, {".wmv",    "audio/x-ms-wmv"}, {".wps",    "application/vnd.ms-works"}, {".xml",    "text/plain"}, {".z",  "application/x-compress"}, {".zip",    "application/x-zip-compressed"}, {"",        "*/*"} }; ———————————————— 版权声明:本文为CSDN博主「零下忆度」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/sinat_30474567/java/article/details/53411146

龙生   21 Apr 2020
View Details

解决postMessage跨域问题

在HTML5中新增了postMessage方法,postMessage可以实现跨文档消息传输(Cross Document Messaging),Internet Explorer 8, Firefox 3, Opera 9, Chrome 3和 Safari 4都支持postMessage。 该方法可以通过绑定window的message事件来监听发送跨文档消息传输内容。   1. postMessage是HTML5 XMLHttpRequest Level 2中的API,且是为数不多可以跨域操作的window属性之一,它可用于解决以下方面的问题: a.) 页面和其打开的新窗口的数据传递 b.) 多窗口之间消息传递 c.) 页面与嵌套的iframe消息传递 d.) 上面三个场景的跨域数据传递 2. postMessage用法:

参数说明: data: html5规范支持任意基本类型或可复制的对象,但部分浏览器只支持字符串,所以传参时最好用JSON.stringify()序列化。 origin: 协议+主机+端口号,也可以设置为"*",表示可以传递给任意窗口,如果要指定和当前窗口同源的话设置为"/"。   举例说明: 两个页面之间进行数据传输,postMessage示例: 我启动了两个ip地址来代表不同域名,页面t_hotnotes_list.html插入如下代码

页面search_role.html插入如下代码:

当两个服务启动之后,我们在浏览器中打开页面t_hotnotes_list.html

得到如下图结果,t_hotnotes_list.html得到两个页面的数据     from:https://www.cnblogs.com/yyy6/p/9481671.html

龙生   21 Apr 2020
View Details

postMessage的使用

一、简介# 1、postMessage()方法允许来自不同源的脚本采用异步方式进行有限的通信,可以实现跨文本档、多窗口、跨域消息传递 2、postMessage(data,origin)方法接受两个参数: (1)data:要传递的数据,html5规范中提到该参数可以是JavaScript的任意基本类型或可复制的对象,然而并不是所有浏览器都做到了这点儿,部分浏览器只能处理字符串参数,所以我们在传递参数的时候需要使用JSON.stringify()方法对对象参数序列化,在低版本IE中引用json2.js可以实现类似效果, (2)origin:字符串参数,指明目标窗口的源,协议+主机+端口号[+URL],URL会被忽略,所以可以不写,这个参数是为了安全考虑,postMessage()方法只会将message传递给指定窗口,当然如果愿意也可以建参数设置为"*",这样可以传递给任意窗口,如果要指定和当前窗口同源的话设置为"/"; 二、使用# 1、子页面向父页面传递消息 <!-- frame1.html --> <h1>iframe1 page</h1> <script>   window.top.postMessage('message from iframe1'); </script> 2、父页面向子页面传递消息

    from:https://www.cnblogs.com/EricZLin/p/10534537.html

龙生   21 Apr 2020
View Details

Dapper.Contrib:GetAsync only supports an entity with a [Key] or an [ExplicitKey]

property 异常处理:http://www.cnblogs.com/dunitian/p/4523006.html#dapper 原来Model是这样滴 修改后是这样滴 注意点:Model里面的Table和Key是Dapper.Contrib.Extensions命名空间下的 成功~   from:https://www.cnblogs.com/dunitian/p/5710467.html

龙生   20 Apr 2020
View Details

DapperExtensions的基本用法

介绍下使用Dapper-Extensions的基本语法 //实体类 DemoEntity entity = new DemoEntity(); //根据实体主键删除 this.Delete<DemoEntity>(entity); //根据主键ID删除 this.Delete<DemoEntity>(1); //增加 this.Insert<DemoEntity>(entity); //更新 bool result = this.Update<DemoEntity>(entity); //根据主键返回实体 entity = this.GetById<DemoEntity>(1); //返回 行数 this.Count<DemoEntity>(new { ID = 1 }); //查询所有 IEnumerable<DemoEntity> list = this.GetAll<DemoEntity>(); IList<ISort> sort = new List<ISort>(); sort.Add(new Sort { PropertyName = "ID", Ascending = false }); //条件查询 list = this.GetList<DemoEntity>(new { ID = 1, Name = "123" }, sort); //orm 拼接条件 查询 IList<IPredicate> predList = new List<IPredicate>(); predList.Add(Predicates.Field<DemoEntity>(p => p.Name, Operator.Like, "不知道%")); predList.Add(Predicates.Field<DemoEntity>(p => p.ID, Operator.Eq, 1)); IPredicateGroup predGroup = Predicates.Group(GroupOperator.And, predList.ToArray());   list […]

龙生   17 Apr 2020
View Details

Asp.Net WebApi一个简单的Token验证

1、前言 WebAPI主要开放数据给手机APP,Pad,其他需要得知数据的系统,或者软件应用。Web 用户的身份验证,及页面操作权限验证是B/S系统的基础功能。我上次写的《Asp.Net MVC WebAPI的创建与前台Jquery ajax后台HttpClient调用详解》这种跟明显安全性不是那么好,于是乎这个就来了 ,用户需要访问的API都必须带有票据过来,说白了就是登陆之后含有用户信息的Token。开始撸… 2、新建一个WebApi项目 在App_Start文件夹下面新建一个BaseApiController控制器,这是基础的Api控制器,后面有要验证的接口都继承这个控制器:

这个构造函数里主动加一个header头信息 ,因为每次访问的时候都要执行构造函数,在那边验证的时候都要从Header中取出来,计算出用户名 是否跟Session缓存的一致这样判断的 3、在建一个TokenCheckFilter.cs 继承AuthorizeAttribute重写基类的验证方式,重写HandleUnauthorizedRequest

  4、在WebApiConfig.cs配置文件里面修改一下路由加上/{action},这样就能调用到具体的哪一个了       Webapi默认是不支持Session的,所以我们需要在Global加载时候添加对Session的支持,在Global.asax里面重写Application_PostAuthorizeRequest,不然运行调用会直接异常

    5、现在来写一个登陆 新建一个控制器LoginController继承BaseApiController 里面写一个登陆的方法Login 登陆页面就直接在Home的index里面写一个简单的就行了这个控制器访问就不受限制了加上注解

  登陆页面 简单而粗暴  

        登陆这个我是写了链接数据库的自己练习可以最易更改一个固定的值 现在应该可以看到返回的Token数据了       6、现在就可以写Api 都继承BaseApiController这个控制器的方法上面需要验证的都要加上验证的注解,我是整个控制都要就直接写在类上面了,随便写一个举举例子,就比如全国省市县的查询

    记录一个EF随意取数据库条数信息是这么写的 var data = db.CnblogsList.OrderBy(p => Guid.NewGuid()).Take(100); 现在看效果图      没有登陆的时候是进不去的 postman上面的效果也看一下     效果都是一样的,如果登录了就可以直接访问 了 不用加参数 ,只有方法需要参数的就可以加             这里贴一个调用的代码:

  7、总结 1)、总体思路,如果是合法的Http请求,在Http请求头中会有用户身份的票据信息,服务端会读取票据信息,并校验票据信息是否完整有效,如果满足校验要求,则进行业务数据的处理,并返回给请求发起方; 2) 如果没有票据信息,或者票据信息不是合法的,则返回“未授权的访问”异常消息给前端,由前端处理此异常。 3)、登录的时候判断用户名跟密码对不对,对了就生成用户信息的Token,Session保存一个Token,BaseApiController里面的登录名跟Token也赋值了。保存这些票据信息。 4)、当用户有权限操作页面或页面元素时,跳转到页面,并由页面Controller提交业务数据处理请求到api服务器; 如果用户没有权限访问该页面或页面元素时,则显示“未授权的访问操作”,跳转到系统异常处理页面。 5)、 api业务服务处理业务逻辑,并将结果以Json 数据返回,返回渲染后的页面给浏览器前端,并呈现业务数据到页面; 8、测试地址 http://www.yijianlan.com:8001/   ———————->先登录,用户名 test密码 […]

龙生   17 Apr 2020
View Details

C#WebAPI返回json去掉双引号前面的反斜杠

  from:https://www.cnblogs.com/taozihua/articles/8716362.html

龙生   17 Apr 2020
View Details

vue css中scoped

1、什么是scoped vue组件中,在style标签中有一个属性,叫做scoped。当此标签拥有scoped属性的时候,该组件下的css样式只适用于本组件,而不会影响全局组件。这其实也相当于样式的模块化了。 2、scoped实现的原理 其实scoped中最重要的就是PostCSS,PostCSS是一种css的编译的工具。来看一下转译之前的代码: 编译前的代码:

  编译之后的代码:

  编译后,我们发现css中,PostCSS给所有的dom都添加了一个独一无二的动态属性,给css选择器也添加了一个对应的属性选择器,这样就可以让样式只作用于该属性的dom元素(组件内部的dom)。   from:https://www.cnblogs.com/marksir/p/11685350.html

龙生   15 Apr 2020
View Details
1 128 129 130 414