<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[刘新修]]></title> 
<link>http://liuxinxiu.com:80/index.php</link> 
<description><![CDATA[刘新修的个人博客 (Liuxinxiu'S Blog)]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[刘新修]]></copyright>
<item>
<link>http://liuxinxiu.com:80/s//</link>
<title><![CDATA[纯前端让浏览器下载pdf文件]]></title> 
<author>刘新修 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[vue]]></category>
<pubDate>Tue, 18 Jul 2023 02:20:15 +0000</pubDate> 
<guid>http://liuxinxiu.com:80/s//</guid> 
<description>
<![CDATA[ 
	<p>&nbsp;</p><div class="codeText"><div class="codeHead">XML/HTML代码</div><ol start="1" class="dp-xml"><li class="alt"><span><span>&lt;!--&nbsp;&nbsp;</span></span></li><li><span>&nbsp;*&nbsp;@Description:&nbsp;npage.vue&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;*&nbsp;@Version:&nbsp;1.0&nbsp;&nbsp;</span></li><li><span>&nbsp;*&nbsp;@Author:&nbsp;LiuXia&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;*&nbsp;@Date:&nbsp;2022-08-01&nbsp;20:32:06&nbsp;&nbsp;</span></li><li><span>&nbsp;*&nbsp;@LastEditors:&nbsp;Jesse&nbsp;Liu&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;*&nbsp;@LastEditTime:&nbsp;2023-07-17&nbsp;20:38:42&nbsp;&nbsp;</span></li><li><span>--<span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">template</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">div</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;wscn-http404-container&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">h1</span><span>&nbsp;</span><span class="attribute">style</span><span>=</span><span class="attribute-value">&quot;line-height:300px;&nbsp;text-align:center&quot;</span><span class="tag">&gt;</span><span>npage.vue&nbsp;(新测试文件)</span><span class="tag">&lt;/</span><span class="tag-name">h1</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="tag">&lt;</span><span class="tag-name">div</span><span class="tag">&gt;</span><span>time:</span><span class="tag">&lt;/</span><span class="tag-name">div</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;<span class="tag">&lt;/</span><span class="tag-name">div</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="tag">&lt;/</span><span class="tag-name">template</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="tag">&lt;</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span>import&nbsp;&#123;&nbsp;parseTime&nbsp;&#125;&nbsp;from&nbsp;'@/utils'&nbsp;&nbsp;</span></li><li><span>import&nbsp;&#123;&nbsp;downloadFile&nbsp;&#125;&nbsp;from&nbsp;&quot;@/utils/getFile&quot;;&nbsp;&nbsp;</span></li><li class="alt"><span>import&nbsp;&#123;&nbsp;fileLinkToStreamDownload&nbsp;,&nbsp;urlFile&nbsp;&#125;&nbsp;from&nbsp;'@/utils/down'&nbsp;&nbsp;</span></li><li><span>export&nbsp;default&nbsp;&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;name:&nbsp;'PageTest',&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;computed:&nbsp;&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;message()&nbsp;&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;'PageTest'&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;parseTime:&nbsp;parseTime&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&#125;,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;methods:&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;downfile(filePath)&#123;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//https://bbwx.kaitaiming.com/image/group1/M00/24/AE/rBBlxWS0vaqAR8ltAAGsWlc-FnY677.pdf&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;后端上传文件返回请求的filePath地址&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(&nbsp;filePath,&nbsp;3333333&nbsp;);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;获取文件名&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;<span class="attribute">fileName</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">urlFile</span><span>(filePath,&nbsp;1);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;获取文件后缀&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;<span class="attribute">fileExtension</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">urlFile</span><span>(filePath,&nbsp;2);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;url下载&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fileLinkToStreamDownload(filePath,fileName,fileExtension);&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&#125;,&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;mounted()&nbsp;&#123;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;this.downfile('http://localhost:9527/image/group1/M00/24/AE/rBBlxWS0vaqAR8ltAAGsWlc-FnY677.pdf');&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;this.$store.dispatch(&quot;case/casesList/downloadFile&quot;,&#123;&#125;).then((res)=<span class="tag">&gt;</span><span>&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;<span class="attribute">data</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">res</span><span>.data;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;<span class="attribute">headers</span><span>&nbsp;=&nbsp;</span><span class="attribute-value">res</span><span>.headers;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/***&nbsp;调用下载文件&nbsp;***/&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//downloadFile(data,&nbsp;headers)&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;)&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&#125;,&nbsp;&nbsp;</span></li><li><span>&#125;&nbsp;&nbsp;</span></li><li class="alt"><span><span class="tag">&lt;/</span><span class="tag-name">script</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;</span></li><li><span><span class="tag">&lt;</span><span class="tag-name">style</span><span>&nbsp;</span><span class="attribute">lang</span><span>=</span><span class="attribute-value">&quot;scss&quot;</span><span>&nbsp;scoped</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li><li class="alt"><span><span class="tag">&lt;/</span><span class="tag-name">style</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li></ol></div><div class="codeText"><div class="codeHead">JavaScript代码</div><ol start="1" class="dp-c"><li class="alt"><span><span class="comment">/*</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;*&nbsp;@Description:&nbsp;down.js</span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;*&nbsp;@Author:&nbsp;Jesse&nbsp;Liu</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;*&nbsp;@Date:&nbsp;2023-02-06&nbsp;16:27:18</span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;*&nbsp;@LastEditors:&nbsp;Jesse&nbsp;Liu</span>&nbsp;</span></li><li><span><span class="comment">&nbsp;*&nbsp;@LastEditTime:&nbsp;2023-07-17&nbsp;20:20:05</span>&nbsp;</span></li><li class="alt"><span><span class="comment">&nbsp;*/</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">export</span><span>&nbsp;</span><span class="keyword">function</span><span>&nbsp;fileLinkToStreamDownload(url,&nbsp;fileName,&nbsp;type)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;let&nbsp;reg&nbsp;=&nbsp;/^([hH][tT]&#123;2&#125;[pP]:&#92;/&#92;/&#124;[hH][tT]&#123;2&#125;[pP][sS]:&#92;/&#92;/)(([A-Za-z0-9-~]+).)+([A-Za-z0-9-~&#92;/])+$/;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(!reg.test(url))&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">throw</span><span>&nbsp;</span><span class="keyword">new</span><span>&nbsp;Error(</span><span class="string">&quot;传入参数不合法,不是标准的文件链接&quot;</span><span>);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&#125;&nbsp;<span class="keyword">else</span><span>&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;let&nbsp;xhr&nbsp;=&nbsp;<span class="keyword">new</span><span>&nbsp;XMLHttpRequest();&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;xhr.open(<span class="string">'get'</span><span>,&nbsp;url,&nbsp;</span><span class="keyword">true</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;xhr.setRequestHeader(<span class="string">'Content-Type'</span><span>,&nbsp;`application/$&#123;type&#125;`);&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;xhr.responseType&nbsp;=&nbsp;<span class="string">&quot;blob&quot;</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;xhr.onload&nbsp;=&nbsp;<span class="keyword">function</span><span>&nbsp;()&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">if</span><span>&nbsp;(</span><span class="keyword">this</span><span>.status&nbsp;==&nbsp;200)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//接受二进制文件流</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;console.log(<span class="keyword">this</span><span>)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">var</span><span>&nbsp;blob&nbsp;=&nbsp;</span><span class="keyword">this</span><span>.response;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">const</span><span>&nbsp;blobUrl&nbsp;=&nbsp;window.URL.createObjectURL(blob);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="comment">//&nbsp;这里的文件名根据实际情况从响应头或者url里获取</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">const</span><span>&nbsp;a&nbsp;=&nbsp;document.createElement(</span><span class="string">'a'</span><span>);&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.href&nbsp;=&nbsp;blobUrl;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.download&nbsp;=&nbsp;fileName;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a.click();&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;window.URL.revokeObjectURL(blobUrl);&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;xhr.send();&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;&#125;&nbsp;&nbsp;</span></li><li class="alt"><span>&#125;&nbsp;&nbsp;</span></li><li><span>&nbsp;&nbsp;</span></li><li class="alt"><span><span class="comment">//&nbsp;获取url中需要的数据&nbsp;&nbsp;type&nbsp;&nbsp;1:&nbsp;获取文件名&nbsp;&nbsp;2：获取后缀&nbsp;&nbsp;3：获取文件名+后缀&nbsp;&nbsp;4:获取文件前缀</span><span>&nbsp;&nbsp;</span></span></li><li><span><span class="keyword">export</span><span>&nbsp;</span><span class="keyword">function</span><span>&nbsp;urlFile(url,&nbsp;type)&nbsp;&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;let&nbsp;filename&nbsp;=&nbsp;url.substring(url.lastIndexOf(<span class="string">'/'</span><span>)&nbsp;+&nbsp;1)&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;<span class="keyword">switch</span><span>&nbsp;(type)&#123;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">case</span><span>&nbsp;1:&nbsp;</span><span class="keyword">return</span><span>&nbsp;filename;&nbsp;</span><span class="keyword">break</span><span>;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">case</span><span>&nbsp;2:&nbsp;</span><span class="keyword">return</span><span>&nbsp;filename.substring(filename.lastIndexOf(</span><span class="string">&quot;.&quot;</span><span>)&nbsp;+&nbsp;1);&nbsp;</span><span class="keyword">break</span><span>;&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">case</span><span>&nbsp;3:&nbsp;</span><span class="keyword">return</span><span>&nbsp;filename.substring(0,&nbsp;filename.lastIndexOf(</span><span class="string">&quot;.&quot;</span><span>));&nbsp;</span><span class="keyword">break</span><span>;&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="keyword">case</span><span>&nbsp;4:&nbsp;</span><span class="keyword">return</span><span>&nbsp;url.substring(0,&nbsp;url.lastIndexOf(</span><span class="string">'/'</span><span>)&nbsp;+&nbsp;1)&nbsp;&nbsp;</span></span></li><li class="alt"><span>&nbsp;&nbsp;&#125;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></li><li><span>&#125;&nbsp;&nbsp;</span></li></ol></div><p>&nbsp;</p>
]]>
</description>
</item><item>
<link>http://liuxinxiu.com:80/s//#blogcomment</link>
<title><![CDATA[[评论] 纯前端让浏览器下载pdf文件]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://liuxinxiu.com:80/s//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>