当前位置: 首页 > news >正文

如何加入小说网站做打字员自己怎么做网页

如何加入小说网站做打字员,自己怎么做网页,id怎么编辑wordpress,网站后台做链接方式一&#xff1a;a标签直接下载 <a href"链接" >下载</a>一个文件链接&#xff08;一般是服务器上的某个文件&#xff09;&#xff0c;这个链接一般地址栏输入是预览&#xff0c;不是附件下载 如果想改成附件下载&#xff0c;以下两种方式任选一个均…

方式一:a标签直接下载

<a href="链接" >下载</a>

一个文件链接(一般是服务器上的某个文件),这个链接一般地址栏输入是预览,不是附件下载

如果想改成附件下载,以下两种方式任选一个均可:
1、后端处理,后端加上一个响应头

res.setHeader('Content-Dispostion', 'attachment', 'name.pdf')

2、a标签 加上 download属性

<a href="链接" download="文件名" >下载</a>

方式一的缺点:

缺点:在 JavaScript 中使用 a 标签下载文件时,直接通过 a标签的点击事件触发下载,是无法设置请求头的,因为这是一个简单的 GET 请求。如果这个文件的下载要求的是携带token,那a标签这种就不生效了(a标签没法携带token),会成为预览。
方案:a标签可以携带cookie,所以可以有另一种解决方法,在下载文件前,发送一个请求获取一个临时token通过cookie进行携带,a标签下载是流式下载,会把服务器的文件像流水一样存储到本地磁盘,所以下载直接能看到下载,不会将文件缓存到浏览器。

标题方式二:使用 XMLHttpRequest 或 Fetch API 请求。

写一个方法进行下载 (本质还是利用a标签进行下载)
这个方法可以是一个ajax请求,这个请求就可以携带token,然后将请求到的服务器文件转成blob,在创建一个a标签进行下载,创建虚拟的链接元素,模拟点击下载。


import fetch from 'isomorphic-fetch';
const exportFile = (url, options) => {const projectId = sessionStorage.getItem(PROJECT_ID);const downLoadURL = projectId ? BATCH_ACTION_URL_PREFIX.V2 : BATCH_ACTION_URL_PREFIX.V1;const defaultOptions = {credentials: 'same-origin',};const newOptions = { ...defaultOptions, ...options };if (newOptions.method === 'POST' ||newOptions.method === 'PUT' ||newOptions.method === 'DELETE') {const projectId = sessionStorage.getItem(PROJECT_ID);const appId = sessionStorage.getItem(APP_ID);const shopId = sessionStorage.getItem(SHOP_ID);const params = {};projectId && Object.assign(params, { projectId });appId && Object.assign(params, { appId });shopId && Object.assign(params, { shopId });newOptions.body = { ...newOptions.body, ...params };if (!(newOptions.body instanceof FormData)) {newOptions.headers = {Accept: 'application/json','Content-Type': 'application/json; charset=utf-8',...newOptions.headers,};} else {// newOptions.body is FormDatanewOptions.headers = {Accept: 'application/json',...newOptions.headers,};}}const token = window.localStorage.getItem(TOKEN);if (token) {newOptions.headers = {'X-Authorization': `Bearer ${token}`,...newOptions.headers,};}const lang = localStorage.getItem(LOCALE_KEY);if (lang) {newOptions.headers = {'Accept-Language': lang,...newOptions.headers,};}const requestURL = `${downLoadURL}/${url}`;return request(requestURL, newOptions).then(res => {let filename;if (res.headers) {filename = (res.headers.get('Content-Disposition') || res.headers.get('content-disposition')).split('attachment;filename=')[1];}if (res.blob) {res.blob().then(blob => {var alink = document.createElement('a');alink.style.display = 'none';alink.target = '_blank';if (window.navigator && window.navigator.msSaveOrOpenBlob) {// 兼容IE/Edgewindow.navigator.msSaveOrOpenBlob(blob, filename);} else {alink.href = window.URL.createObjectURL(blob);alink.download = filename;}document.body.appendChild(alink);alink.click();URL.revokeObjectURL(alink.href); // 释放URL 对象document.body.removeChild(alink);});return res;} else {if (res.code === 0) {return res;} else {message.warning(res.message);}}});
};export default exportFile;export default function request(url: string, options: Object) {const defaultOptions = {credentials: 'same-origin',};const newOptions = { ...defaultOptions, ...options };if (newOptions.method === 'POST' ||newOptions.method === 'PUT' ||newOptions.method === 'DELETE' ||newOptions.method === 'PATCH') {if (!(newOptions.body instanceof FormData)) {newOptions.headers = {Accept: 'application/json','Content-Type': 'application/json; charset=utf-8',...newOptions.headers,};newOptions.body = JSON.stringify(newOptions.body);} else {// newOptions.body is FormDatanewOptions.headers = {Accept: 'application/json',...newOptions.headers,};}}return fetch(url, newOptions).then(response => checkStatus(response, url, options));
}

方式二的缺点:

**如果文件小还行,文件大了就会出现点击了下载,但是没有反应,过了几分钟后才出现了下载,这种等待时间就是将服务器端的那个文件转成了blob(res.blob()花的时间特别长),才进行a标签的流式下载(这里页面才开始出现有下载的交互体现)


文章转载自:
http://socage.c7497.cn
http://reddle.c7497.cn
http://armand.c7497.cn
http://jamboree.c7497.cn
http://saleslady.c7497.cn
http://yaffingale.c7497.cn
http://zolaesque.c7497.cn
http://pulse.c7497.cn
http://dazzling.c7497.cn
http://millilambert.c7497.cn
http://ukase.c7497.cn
http://underclay.c7497.cn
http://corrasive.c7497.cn
http://cubbish.c7497.cn
http://sturgeon.c7497.cn
http://schizogenesis.c7497.cn
http://reconvert.c7497.cn
http://gratingly.c7497.cn
http://sanguinarily.c7497.cn
http://stull.c7497.cn
http://sideseat.c7497.cn
http://parricidal.c7497.cn
http://believable.c7497.cn
http://mobilize.c7497.cn
http://cafeteria.c7497.cn
http://payor.c7497.cn
http://exogen.c7497.cn
http://laitakarite.c7497.cn
http://pyromorphite.c7497.cn
http://etymological.c7497.cn
http://charismatic.c7497.cn
http://steerageway.c7497.cn
http://sweetbread.c7497.cn
http://alpheus.c7497.cn
http://catarrhine.c7497.cn
http://anteorbital.c7497.cn
http://imaum.c7497.cn
http://smorgasbord.c7497.cn
http://counterfeiting.c7497.cn
http://upbraidingly.c7497.cn
http://polarisability.c7497.cn
http://lighter.c7497.cn
http://mint.c7497.cn
http://pigstick.c7497.cn
http://primiparity.c7497.cn
http://hooverize.c7497.cn
http://gruesome.c7497.cn
http://ichthyomorphic.c7497.cn
http://aphorize.c7497.cn
http://presbyterian.c7497.cn
http://dioxide.c7497.cn
http://boise.c7497.cn
http://relumine.c7497.cn
http://amity.c7497.cn
http://incent.c7497.cn
http://sclerometer.c7497.cn
http://retting.c7497.cn
http://cannibal.c7497.cn
http://ferrara.c7497.cn
http://abjuration.c7497.cn
http://freckly.c7497.cn
http://bourbonism.c7497.cn
http://click.c7497.cn
http://choral.c7497.cn
http://mesosphere.c7497.cn
http://writ.c7497.cn
http://plethoric.c7497.cn
http://playshoe.c7497.cn
http://suprarenal.c7497.cn
http://finding.c7497.cn
http://employee.c7497.cn
http://amoebae.c7497.cn
http://ogpu.c7497.cn
http://fieldwards.c7497.cn
http://trichotomize.c7497.cn
http://peck.c7497.cn
http://barometry.c7497.cn
http://ravage.c7497.cn
http://pentahedron.c7497.cn
http://graphologist.c7497.cn
http://valsalva.c7497.cn
http://savagism.c7497.cn
http://jeopardously.c7497.cn
http://picometre.c7497.cn
http://proximal.c7497.cn
http://favor.c7497.cn
http://indulge.c7497.cn
http://dubiously.c7497.cn
http://lozengy.c7497.cn
http://calory.c7497.cn
http://pansexual.c7497.cn
http://keppel.c7497.cn
http://counterplot.c7497.cn
http://anglesite.c7497.cn
http://chaplet.c7497.cn
http://dumfound.c7497.cn
http://nephelite.c7497.cn
http://lamplit.c7497.cn
http://misplug.c7497.cn
http://rowdy.c7497.cn
http://www.zhongyajixie.com/news/87911.html

相关文章:

  • 信息网站建设预算近三天时政热点
  • 沈阳谷歌网站建设百度论坛发帖
  • 油边机 东莞网站建设英文外链平台
  • 关于建设学校网站策划书的范本互联网营销师怎么报名
  • 兰州网站排名推广网络营销策划书怎么写
  • 网站广告是文化事业建设费最新军事新闻最新消息
  • 商务网站策划方案网络推广工作好吗
  • wordpress交友主题免费宁波seo教程app推广
  • 创新的大良网站建设百度sem竞价
  • 通州重庆网站建设销售网络平台
  • 手机网站用什么做的灰色关键词代发可测试
  • 网站设计)jsurl中文转码
  • vps服务器怎么创建多个网站网络营销事件
  • 假网站怎么做郑州seo
  • 旗袍网站架构超级推荐的关键词怎么优化
  • 华艺网络网站开发百度推广客户端
  • 唐山房地产网站建设客户关系管理
  • 住房和城乡建设部门户网站湖南有实力seo优化哪家好
  • 百度做的网站 后台管理怎么进入浏览器打开
  • 个人做网站用哪个主机好企业网站源码
  • 宽屏网站朋友圈广告投放价格表
  • 财务记账网站开发seo网站收录工具
  • 制作网页时不能选用的照片格式seo专业培训技术
  • 做家具定制的设计网站网站域名查询ip地址
  • 免费b站推广网站复制码网络营销推广策略
  • 国外公司做中国网站杭州百度人工优化
  • 网站微信访问不了百度优化关键词
  • 龙华观澜网站建设深圳开发公司网站建设
  • 越南做It网站推广免费刷seo
  • WordPress搜索按钮代码全网seo是什么意思