首页
Search
1
Linux 下 Bash 脚本 bad interpreter 报错的解决方法
69 阅读
2
Arch Linux 下解决 KDE Plasma Discover 的 Unable to load applications 错误
51 阅读
3
Arch Linux 下解决 KDE Plasma Discover 的 Unable to load applications 错误
42 阅读
4
如何在 Clash for Windows 上配置服务
40 阅读
5
如何在 IOS Shadowrocket 上配置服务
40 阅读
clash
服务器
javascript
全部
游戏资讯
登录
Search
加速器之家
累计撰写
1,061
篇文章
累计收到
0
条评论
首页
栏目
clash
服务器
javascript
全部
游戏资讯
页面
搜索到
1061
篇与
的结果
2024-09-18
Web开发中两种导出文件的思路
场景注意是导出文件的场景,不是普通的现在文件,导出文件一般先要生成文件然后在下载文件,比如企业中经常用到的excel导出功能,先生成excel表格。在下载excel表格如果现在让你做这么一个导出excel的功能你第一时间会想到什么?一般都会想到在文件生成之后在response中声明Content-Type的MIME为二进制文件浏览器会自动进行下载,这是在response上面做文章,整个过程发了一次请求在实际开发过程中还看到一种做法:不在response上面做文章,直接在服务器上生成可以下载的文件,然后返回文件的路径,js在请求下载该文件,这是在js上做文章,整个过程发了两次请求下面分别看一下两种思路的实现方案在response上声明下载在Java Spring框架中你可以这么写@GetMapping("/export") public void export(HttpServletRequest request, HttpServletResponse response,SwaggerUserFindVO user) throws IOException { //set header String fileName = "用户数据导出"+System.currentTimeMillis()+".xls"; String userAgent = request.getHeader("user-agent").toLowerCase(); // WIN10 IE EDGE 浏览器 和其他系统的ie if (userAgent.contains("msie") || userAgent.contains("like gecko") ) { fileName = URLEncoder.encode(fileName, "UTF-8"); //非IE } else { fileName = new String(fileName.getBytes(),"ISO8859-1"); } response.setContentType("application/octet-stream;charset=ISO8859-1"); response.setHeader("Content-Disposition", "attachment;filename="+ fileName); response.addHeader("Pargam", "no-cache"); response.addHeader("Cache-Control", "no-cache"); //write file OutputStream os = response.getOutputStream(); //组装excel XSSFWorkbook wb = createWorkbook(); wb.write(os); os.flush(); os.close(); }最后直接在浏览器地址栏输入路径,用GET请求下载即可,整个过程一次请求在js中请求文件下载后端@RequestMapping(value = "/export",produces = "application/text; charset=utf-8") @ResponseBody public String exportKeywordSceneMonitoringData(HttpServletRequest request) { //容器根path,这个地方生成的文件可以被容器直接访问 String path = request.getSession().getServletContext().getRealPath("/") //定义临时目录 String folderName = "/tempLoad"; //创建目录 File file = new File(path + folderName); if (!file.exists()) { file.mkdirs(); } //文件名字 fileName = "/文件导出.xlsx"; StringBuilder filePath = new StringBuilder(path).append(folderName).append(fileName); //生成此文件 SXSSFWorkbook workbook = new SXSSFWorkbook();//TODO FileOutputStream out = new FileOutputStream(filePath); workbook.write(out); //返回文件名称 return folderName + fileName; }前端var params = {}; $.ajax({ type: 'post', url: '../app/export', data: params, dataType: 'text', success: function(_fileName){ if (_fileName != '') { //浏览器地址栏给生成的文件发送GET请求即可下载 window.location.href = "../" + _fileName; } }, error: function(){ } }); 在js中控制下载,整个过程两次请求
2024年09月18日
8 阅读
0 评论
0 点赞
2024-09-12
html代码高亮highlight.js插件的使用,如何使用highlight.js高亮代码
网站html代码高亮,markdown代码语法高亮方法我们用到就是highlightjs,Highlight.js 是一款代码高亮 js 插件,其使用 JavaScript 编写,可以应用于浏览器和服务端。它囊括了绝大多数语言的语法标记,不依赖于任何其他框架,并且具有自动语言检测功能。官网下载地址:https://highlightjs.org/cdn地址:cdnjs,jsdelivr,unpkgcdnjs <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/default.min.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min.js"></script> jsdelivr <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.7.0/build/styles/default.min.css"> <script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.7.0/build/highlight.min.js"></script> unpkg <link rel="stylesheet" href="https://unpkg.com/@highlightjs/cdn-assets@11.7.0/styles/default.min.css"> <script src="https://unpkg.com/@highlightjs/cdn-assets@11.7.0/highlight.min.js"></script>使用方法:下载好之后我们就开始引入我们的网站:1、引入css和js<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/styles/default.min.css"> <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min.js"></script>2、实例化<script>hljs.highlightAll();</script>3、示例代码:<pre><code class="language-html">...</code></pre>4、说明(其他端说明):4.1、浏览器端highlight.js 最基本的用法,就是在页面上仅引用插件库脚本和一个主题,然后调用 highlightAll():<link rel="stylesheet" href="https://www.tpxhm.com/path/to/styles/default.min.css"> <script src="https://www.tpxhm.com/path/to/highlight.min.js"></script> <script>hljs.highlightAll();</script>上述调用将会检索所有 <pre><code> 标签并对其中内容进行代码高亮处理,它会尝试自动检测语言。如果语言自动检测失败,又或者你想明确指定语言,那么可以使用 class 进行手动指定:<pre><code class="language-html">...</code></pre>4.1、纯文本代码块对于纯文本,若要想应用 Highlight.js 主题样式,而又不对文本内容进行高亮显示,请使用 plaintext 语言:<pre><code class="language-plaintext">...</code></pre>4.2、跳过高亮处理使用 nohighlight class 可以完全跳过本插件所有的处理,保持 code 标签原本的样式:<pre><code class="nohighlight">...</code></pre>4.3、服务端 Node.js最基本用法就是对一段代码进行语言自动检测并返回高亮处理后的内容。// load the library and ALL languages hljs = require('highlight.js'); html = hljs.highlightAuto('<h1>Hello World!</h1>').value4.3、仅加载主流语言的“通用”子集:hljs = require('highlight.js/lib/common');4.4、使用 highlight() 可以指定进行高亮处理的代码语言:html = hljs.highlight('<h1>Hello World!</h1>', {language: 'xml'}).value4.5、强烈建议使用 <pre><code> 进行代码块封装。它相当语义化,而且它开箱即用,无需作任何更改。不过要想用其他 HTML 元素(或元素组合)也不是不可以,但你可能需要特别注意保留换行符。比如你使用 div 作为代码块标记:<div class='code'>...</div>然后对上述标记进行手动高亮处理:// first, find all the div.code blocks document.querySelectorAll('div.code').forEach(el => { // then highlight each hljs.highlightElement(el); });更多使用教程,详见API文档:highlight.js中文文档
2024年09月12日
14 阅读
0 评论
0 点赞
2024-09-12
黑神话二姐获外国玩家好评,比蜘蛛女侠更美观
Reddit外网玩家分享《黑神话:悟空》蜘蛛精二姐比“蜘蛛女侠”香多的梗图,受到玩家欢迎。游戏中蜘蛛精二姐、四妹、小狐狸萍萍等女妖精备受喜爱,评论区有人表示蜘蛛精一家可能能治愈人们的蜘蛛恐惧症。最近,国外3D渲染爱好者提取出了游戏中二姐的3D模型,并制作了3D同人作品。此外,游民星空《黑神话悟空》全收集互动地图上线,包含全部NPC支线、隐藏点位、重要道具。
2024年09月12日
10 阅读
0 评论
0 点赞
2024-09-12
PHP使用企业微信接口实现H5网页二维码、条形码扫码功能
实现H5二维码、条形码扫码使用企业微信接口,相比原生接口扫码功能,更加精准和准确识别,以下是个案例,供大家参考。1、前端放置点击按钮,并引入js<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0" name="viewport"> <title>企业微信H5扫码功能</title> <script src="https://res.wx.qq.com/open/js/jweixin-1.2.0.js"></script> <script type="text/javascript" src="https://www.tpxhm.com/fdetail/js/jquery.js"></script> </head> <body> <button type="button" class="sack"> 扫一扫</button> </body> </html>2、js按钮点击时间代码:<script> $('.sack').click(function(){ wx.scanQRCode({ desc: 'scanQRCode desc', needResult: 1, // 默认为0,扫描结果由企业微信处理,1则直接返回扫描结果, scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是条形码(一维码),默认二者都有 success: function(res) { // 回调 var result = res.resultStr;//当needResult为1时返回处理结果 }, error: function(res) { if (res.errMsg.indexOf('function_not_exist') > 0) { alert('版本过低请升级') } alert(JSON.stringify(res)) } }); }) </script>3、通过config接口注入权限验证配置<script> wx.config({ beta: true,// 必须这么写,否则wx.invoke调用形式的jsapi会有问题 debug: false, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId: '<?php echo $wxagentConfig["corpid"];?>', // 必填,企业微信的corpID,必须是本企业的corpID,不允许跨企业使用 timestamp: '<?php echo $wxagentConfig["timestamp"];?>', // 必填,生成签名的时间戳 nonceStr: '<?php echo $wxagentConfig["nonceStr"];?>', // 必填,生成签名的随机串 signature: '<?php echo $wxagentConfig["signature"];?>',// 必填,签名,见 附录-JS-SDK使用权限签名算法 jsApiList: ['scanQRCode'] // 必填,需要使用的JS接口列表,凡是要调用的接口都需要传进来 }); //通过ready接口处理成功验证 wx.ready(function(res){ // alert(11) // config信息验证后会执行ready方法,所有接口调用都必须在config接口获得结果之后,config是一个客户端的异步操作,所以如果需要在页面加载时就调用相关接口,则须把相关接口放在ready函数中调用来确保正确执行。对于用户触发时才调用的接口,则可以直接调用,不需要放在ready函数中。 }); //通过error接口处理失败验证 wx.error(function(res){ // alert(JSON.stringify(res)) // config信息验证失败会执行error函数,如签名过期导致验证失败,具体错误信息可以打开config的debug模式查看,也可以在返回的res参数中查看,对于SPA可以在这里更新签名。 }); </script>4、PHP获取配置信息方法<?php $appid = "ww56e482c3201e863"; //企业信息中的ID $SECRET = "T4TAmrI4gSSErrNNe_bdo5L255018r2x2"; //应用secret $agentid = "1325122"; // 配置信息 // 1、获取access_token $url = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=".$appid."&corpsecret=".$SECRET; $result = getJson($url); // 通过code和access_token获取userid和user_ticket $access_token = $result['access_token']; // 2、获取企业的jsapi_ticket $res3 = getJson("https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=".$access_token); if($res3['errcode']==0){ 3、生成签名 $jsapi_ticket=$res3['ticket']; $noncestr = noncestr(16); $timestamp = time(); $surl = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];; $signatureString = "jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."×tamp=".$timestamp."&url=".$surl; $signature = sha1 ( $signatureString ); //对signatureString进行sha1签名,得到signature: // var_dump($signature);exit; $wxagentConfig = wxagentConfig($appid,$agentid,$timestamp,$noncestr,$signature,$surl,$jsapi_ticket); // 生成企业微信所需字段 function wxagentConfig($appid,$agentid,$timestamp,$noncestr,$signature,$surl,$jsapi_ticket){ $wx['corpid'] =$appid; // 必填,企业微信的corpid,必须与当前登录的企业一致 $wx['agentid'] = $agentid; // 必填,企业微信的应用id (e.g. 1000247) $wx['timestamp'] = $timestamp; // 必填,生成签名的时间戳 $wx['nonceStr'] = $noncestr; // 必填,生成签名的随机串 $wx['signature'] = $signature;// 必填,签名,见附录-JS-SDK使用权限签名算法 return $wx; } // 生成签名的随机串 function nonceStr($length){ $str = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJK1NGJBQRSTUVWXYZ';//随即串,62个字符 $strlen = 62; while($length > $strlen){ $str .= $str; $strlen += 62; } $str = str_shuffle($str); return substr($str,0,$length); } function getJson($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); curl_close($ch); return json_decode($output, true); } ?>
2024年09月12日
7 阅读
0 评论
0 点赞
2024-09-12
《塞尔达传说王国之泪》原本想叫做“龙之泪”?制作人揭秘!
《塞尔达传说:王国之泪》制作人青沼英二在最新发布的艺术画册中透露游戏名称背后的故事。青沼英二表示,“龙之泪”曾是最终候选,但可能过分强调“白龙”,而白龙是塞尔达的身份。最终,制作团队选择了“王国之泪”作为游戏名称以避免剧透。青沼英二在画册中表示,“王国之泪”这个词语让人联想到白龙,因此最终确定了游戏名称和logo。在游戏公布名称之前,青沼英二曾表示游戏名称有重大剧透,因此游戏直到最后才公布名称。
2024年09月12日
4 阅读
0 评论
0 点赞
1
...
96
97
98
...
213