{"id":8002,"date":"2020-04-24T10:26:46","date_gmt":"2020-04-24T02:26:46","guid":{"rendered":"https:\/\/sdeno.com\/?p=8002"},"modified":"2022-03-14T18:06:43","modified_gmt":"2022-03-14T10:06:43","slug":"js%e8%af%b7%e6%b1%82%e4%ba%8c%e8%bf%9b%e5%88%b6%e6%b5%81%e6%8e%a5%e5%8f%a3%e5%8f%a6%e5%ad%98%e4%b8%ba%e4%b8%94%e5%b8%a6token%e9%aa%8c%e8%af%81","status":"publish","type":"post","link":"https:\/\/sdeno.com\/?p=8002","title":{"rendered":"js\u901a\u8fc7get\u8bf7\u6c42\u4e8c\u8fdb\u5236\u6d41\u63a5\u53e3\u4e0b\u8f7d\u6587\u4ef6\uff0c\u4e14\u5e26token\u9a8c\u8bc1"},"content":{"rendered":"<p>jquery \u89e3\u6790 blob \u4e8c\u8fdb\u5236\u6d41 \u5bfc\u51fa \u4e0b\u8f7d excel \u63a5\u53e3<\/p>\n<p>\u4e0b\u8f7d\uff1a<a href=\"https:\/\/sdeno.com\/wp-content\/uploads\/2020\/04\/jquery-ajax-blob-arraybuffer.js\">jquery-ajax-blob-arraybuffer<\/a><\/p>\n<p>\u60c5\u666f\uff1a\u5f53\u6211\u4eec\u8bf7\u6c42\u63a5\u53e3\u8fd4\u56de\u6765\u7684\u662f\u4e00\u5806\u4e8c\u8fdb\u5236\u6d41\u4e71\u7801\uff0c\u4f8b\u5982\uff1a\uff08\u76f8\u5f53\u4e8e\u6211\u4eec\u7528\u8bb0\u4e8b\u672c\u65b9\u5f0f\u53bb\u6253\u5f00\u6587\u4ef6\u4e00\u6837\uff0c\u5176\u5b9e\u6587\u4ef6\u662f\u6709\u7684\uff09<\/p>\n<figure class=\"mdx-lazyload-container\" style=\"max-width:511px\"><div style=\"padding-top:51.272015655577%\"><\/div><div class=\"mdx-img-loading-sp mdui-valign\"><div><div class=\"mdui-spinner\"><\/div><\/div><\/div><img width=\"511\" height=\"262\" class=\"alignnone size-full wp-image-8030 lazyload\" title=\"js\u901a\u8fc7get\u8bf7\u6c42\u4e8c\u8fdb\u5236\u6d41\u63a5\u53e3\u4e0b\u8f7d\u6587\u4ef6\uff0c\u4e14\u5e26token\u9a8c\u8bc1\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"https:\/\/sdeno.com\/wp-content\/uploads\/2020\/04\/erjinzhiliu.jpg\" alt=\"https:\/\/sdeno.com\/wp-content\/uploads\/2020\/04\/erjinzhiliu.jpg\" data-srcset=\"https:\/\/sdeno.com\/wp-content\/uploads\/2020\/04\/erjinzhiliu.jpg 511w, https:\/\/sdeno.com\/wp-content\/uploads\/2020\/04\/erjinzhiliu-300x154.jpg 300w\" sizes=\"auto, (max-width: 511px) 100vw, 511px\"><\/figure>\n<p>\u50cf\u8fd9\u6837\u7684\u8c03\u7528\u63a5\u53e3\u4e0b\u8f7d\u6587\u4ef6\uff0c\u8bf7\u6c42\u65b9\u5f0f\u5fc5\u987b\u662fget\u3002<\/p>\n<p>\u5982\u4f55\u4e0b\u8f7d\uff1a<\/p>\n<p>1\uff0cget\u8bf7\u6c42\u4e0d\u5230\u4efb\u4f55token<\/p>\n<pre>&lt;a href=\"http:\/\/localhost:3000\/upload\/api\" download=\"xxx\"&gt;\u4e0b\u8f7d11&lt;\/a&gt;   \/\/href\u6362\u6210\u81ea\u5df1\u63a5\u53e3\uff0c\u4e0b\u8f7d\u540e\u662fxxx.gif<\/pre>\n<p>&nbsp;<\/p>\n<p>2\uff0cpost\u8bf7\u6c42\u4e0d\u5e26token<\/p>\n<pre>exportExcel() { \/\/\u5bfc\u51fa\r\n    this.exportDisabled = true;\r\n    var url = basePath + '\/act\/excel\/data\/ranking';\r\n    var exportForm = $(\"&lt;form action=\" + url + \" method='post'&gt;&lt;\/form&gt;\")\r\n    exportForm.append(\"&lt;input type='hidden' name='roomNumber' value='\" + this.queryData.roomNumber + \"'\/&gt;\")\r\n    exportForm.append(\"&lt;input type='hidden' name='type' value='\" + this.queryData.type + \"'\/&gt;\")\r\n    $(document.body).append(exportForm);\r\n    exportForm.submit();\r\n    exportForm.remove();\r\n    this.exportDisabled = false;\r\n},<\/pre>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>3\uff0c\u901a\u8fc7base64\u4e0b\u8f7d \u5e26token<\/p>\n<p>\u5982\u679c\u8981\u5e26token\u9a8c\u8bc1\u624d\u80fd\u4e0b\u8f7d\u5c31\u4f7f\u7528\u4ee5\u4e0b\u65b9\u6cd5\uff1a\uff08\u601d\u8def\uff1a<span style=\"color: #ff0000;\">\u4e8c\u8fdb\u5236\u6d41\u00a0 \u00a0\u8f6c\u00a0 blob\u00a0 \u8f6c\u00a0base64<\/span> \uff09<\/p>\n<pre>&lt;script src=\"https:\/\/cdn.bootcdn.net\/ajax\/libs\/jquery\/1.8.3\/jquery.js\"&gt;&lt;\/script&gt;\r\n&lt;script src=\"https:\/\/greasyfork.org\/scripts\/20389-jquery-ajax-blob-arraybuffer\/code\/jquery-ajax-blob-arraybuffer.js\"&gt;&lt;\/script&gt;\r\n\r\n$.ajax({\r\n  type:'get',\r\n  url:`${process.env.VUE_APP_BASE_API}\/wucg\/cms\/downloadStudent`,\r\n  headers:{\r\n    \"userToken\":store.getters.token,\r\n    \"Content-Type\":\"application\/json\"\r\n  },\r\n  dataType: \"blob\",  \/\/jquery \u6ca1\u6709\u89e3\u6790blob\u7c7b\u578b\u8981\u8fdb\u5165 jquery-ajax-blob-arraybuffer.js\r\n  success(data){\r\n        var blob = data;\r\n        var reader = new FileReader();\r\n        reader.readAsDataURL(blob);    \/\/ <span style=\"color: #ff0000;\">\u8f6c\u6362\u4e3abase64\uff0c\u53ef\u4ee5\u76f4\u63a5\u653e\u5165a\u8868\u60c5href<\/span>\r\n        reader.onload = function (e) {\r\n          \/\/ \u8f6c\u6362\u5b8c\u6210\uff0c\u521b\u5efa\u4e00\u4e2aa\u6807\u7b7e\u7528\u4e8e\u4e0b\u8f7d\r\n          var a = document.createElement('a');\r\n          a.href = e.target.result;\r\n\r\n          self.$nextTick(function() {\r\n            $('#dowBtn').html(  $(a).text('\u5bfc\u51fa')  )\r\n          })\r\n        }\r\n  },\r\n})<\/pre>\n<p>&nbsp;<\/p>\n<p>\u6216\u8005\u00a0\u00a0\u901a\u8fc7blob\u4e0b\u8f7d \u5e26token<\/p>\n<pre>\/\/\u4e0b\u8f7d\r\ndownloadFile(fileName,blob) {\r\n  let aLink = document.createElement('a');\r\n  var blob = blob; \/\/new Blob([content]);\r\n\r\n  let evt = document.createEvent(\"HTMLEvents\");\r\n  evt.initEvent(\"click\", true, true);\/\/initEvent \u4e0d\u52a0\u540e\u4e24\u4e2a\u53c2\u6570\u5728FF\u4e0b\u4f1a\u62a5\u9519  \u4e8b\u4ef6\u7c7b\u578b\uff0c\u662f\u5426\u5192\u6ce1\uff0c\u662f\u5426\u963b\u6b62\u6d4f\u89c8\u5668\u7684\u9ed8\u8ba4\u884c\u4e3a\r\n  aLink.download = fileName;\r\n  aLink.href = URL.createObjectURL(blob);\r\n\r\n  \/\/ aLink.dispatchEvent(evt);\r\n  \/\/aLink.click()\r\n  aLink.dispatchEvent(new MouseEvent('click', {bubbles: true, cancelable: true, view: window}));\/\/\u517c\u5bb9\u706b\u72d0\r\n},\r\n\r\n\/\/\u83b7\u53d6\u5bfc\u51fa\u6218\u961fblob\r\nexportTeam(){\r\n\r\n  var self =this\r\n  console.log(self.seachData)\r\n  \/\/ return\r\n  this.$axios({\r\n    method: 'post',\r\n    url: `${process.env.VUE_APP_BASE_API}\/wucg\/cms\/downloadTeamList`,\r\n    headers: {\r\n      'Content-Type': 'application\/json',\r\n      \"userToken\":store.getters.token\r\n    },\r\n    data: {\r\n      matchId:self.seachData.matchId,\r\n      division:self.seachData.division,\r\n      cityCodes:self.seachData.cityCodes,\r\n      schoolCodes:self.seachData.schoolCodes,\r\n      teamName:self.seachData.teamName,\r\n      gameId:self.seachData.gameId,\r\n      teamStatus:self.seachData.teamStatus\r\n    },\r\n    responseType: 'blob'\r\n  }).then((res)=&gt;{\r\n    var blob = res.data;\r\n    var filName = decodeURIComponent(res.headers['content-disposition'].split(';')[1].split('\\'\\'')[1])\r\n    self.downloadFile(filName || '\u6218\u961f\u5217\u8868.xls',blob)  <span style=\"color: #ff0000;\">\/\/\u76f4\u63a5\u901a\u8fc7blob\u6570\u636e\u4e0b\u8f7d<\/span>\r\n  })\r\n},<\/pre>\n<p>&nbsp;<\/p>\n<pre>\/\/base64\u8f6cblob\r\nbase64ToBlob(code) {\r\n  let parts = code.split(';base64,');\r\n  let contentType = parts[0].split(':')[1];\r\n  let raw = window.atob(parts[1]);\r\n  let rawLength = raw.length;\r\n\r\n  let uInt8Array = new Uint8Array(rawLength);\r\n\r\n  for (let i = 0; i &lt; rawLength; ++i) {\r\n    uInt8Array[i] = raw.charCodeAt(i);\r\n  }\r\n  return new Blob([uInt8Array], {type: contentType});\r\n},<\/pre>\n<p>&nbsp;<\/p>\n<p>\u53c2\u8003\uff1a<a href=\"https:\/\/www.jb51.net\/article\/88972.htm\" target=\"_blank\" rel=\"noopener\">https:\/\/www.jb51.net\/article\/88972.htm<\/a><\/p>\n<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;\u4ee5\u4e0b\u662f\u539f\u751f\u5199\u6cd5&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<\/p>\n<p>\u540e\u53f0\u76f4\u63a5\u63d0\u4f9b\u4e0b\u8f7d\u63a5\u53e3\uff0c\u76f4\u63a5\u7528a\u6807\u7b7e\u8bf7\u6c42\u63a5\u53e3\u5373\u53ef\u3002\u4f46\u662f\u8003\u8651\u5b89\u5168\uff0c\u5728\u7528get\u8bf7\u6c42\u4e0b\u8f7d\u7684\u540c\u65f6\u8981\u5e26\u4e0atoken\u9a8c\u8bc1\u3002<\/p>\n<p>\u4ee3\u7801\u7ecf\u8fc7\u5b9e\u8df5\u53ef\u884c\uff1a<\/p>\n<pre>var xhh = new XMLHttpRequest();\r\nxhh.open(\"get\", `${process.env.VUE_APP_BASE_API}\/wucg\/cms\/downloadStudent` );  \/\/\u8bf7\u6c42\u5730\u5740\r\nxhh.setRequestHeader(\"Authorization\", \"Bearer \"+token);  \/\/token\u8bbe\u7f6e\r\nxhh.setRequestHeader(\"Content-Type\",\"application\/json\");\r\nxhh.responseType = 'blob';\r\n\/\/ xhh.onreadystatechange = function () {\r\n\/\/     if (xhh.readyState === 4 &amp;&amp; xhh.status === 200) {\r\n\/\/         var mimeType = xhh.getResponseHeader(\"ajax-mimeType\");\r\n\/\/         var blob = new Blob([xhh.response], {type: mimeType});\r\n\/\/         var csvUrl = URL.createObjectURL(blob);\r\n\/\/         var link = document.createElement('a');\r\n\/\/         document.body.appendChild(link); \/\/\u521b\u5efa\u7684\u6807\u7b7e\u6dfb\u52a0\u5230body\uff0c\u89e3\u51b3Firefox\u4e0b\u65e0\u6cd5\u6253\u5f00\u9875\u9762\u7684\u95ee\u9898\r\n\/\/         link.href = csvUrl;\r\n\/\/         link.target = '_blank';\r\n\/\/         link.id = 'linkId',\r\n\/\/         link.className = 'linkId',\r\n\/\/         link.download = fileName;\r\n\/\/         document.getElementById(\"linkId\").click();\r\n\/\/         \/\/ link.remove(); \/\/\u5c06a\u6807\u7b7e\u79fb\u9664\r\n\/\/         $('.linkId').remove()\r\n\/\/     }\r\n\/\/ };\r\nxhh.onload = function () {\r\n  \/\/ \u8bf7\u6c42\u5b8c\u6210\r\n  if (this.status === 200) {\r\n    \/\/ \u8fd4\u56de200\r\n    var blob = this.response;\r\n    var reader = new FileReader();\r\n    reader.readAsDataURL(blob);    \/\/ \u8f6c\u6362\u4e3abase64\uff0c\u53ef\u4ee5\u76f4\u63a5\u653e\u5165a\u8868\u60c5href\r\n    reader.onload = function (e) {\r\n      \/\/ \u8f6c\u6362\u5b8c\u6210\uff0c\u521b\u5efa\u4e00\u4e2aa\u6807\u7b7e\u7528\u4e8e\u4e0b\u8f7d\r\n      var a = document.createElement('a');\r\n      a.href = e.target.result;\r\n\r\n      self.$nextTick(function() {\r\n        $('#dowBtn').html(  $(a).text('\u5bfc\u51fa')  )\r\n      })\r\n    }\r\n  }\r\n};\r\nxhh.send();<\/pre>\n<p>&nbsp;<\/p>\n<p>\u8981\u60f3\u5b9e\u73b0\uff0c\u70b9\u51fb\u94fe\u63a5\u6709\u53e6\u5b58\u4e3a\u6548\u679c\u53c2\u770b\uff1a<a href=\"https:\/\/sdeno.com\/?p=7553\" target=\"_blank\" rel=\"noopener\">https:\/\/sdeno.com\/?p=7553<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>jquery \u89e3\u6790 blob \u4e8c\u8fdb\u5236\u6d41 \u5bfc\u51fa \u4e0b\u8f7d excel \u63a5\u53e3 \u4e0b\u8f7d\uff1ajquery-ajax-blob- [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[],"class_list":["post-8002","post","type-post","status-publish","format-standard","hentry","category-11"],"_links":{"self":[{"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/posts\/8002","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sdeno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=8002"}],"version-history":[{"count":0,"href":"https:\/\/sdeno.com\/index.php?rest_route=\/wp\/v2\/posts\/8002\/revisions"}],"wp:attachment":[{"href":"https:\/\/sdeno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=8002"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sdeno.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=8002"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sdeno.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=8002"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}