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

做外贸手机网站百度网站怎么做的赚钱吗

做外贸手机网站,百度网站怎么做的赚钱吗,WordPress和微信小程序,四川平台网站建设哪里有1.window.open 我最初使用的方法就是这个,只要提供了文件的服务器地址,使用window.open也就是在新窗口打开,这时浏览器会自动执行下载。 2.a标签 其实window.open和a标签是一样的,只是a标签是要用户点击触发,而wind…

1.window.open

我最初使用的方法就是这个,只要提供了文件的服务器地址,使用window.open也就是在新窗口打开,这时浏览器会自动执行下载。

2.a标签

其实window.open和a标签是一样的,只是a标签是要用户点击触发,而window.open可以主动触发

后端如果设置了Content-Disposition ,那么不需要download属性也能下载。而且后端还可以设置文件名。

<a href="https:xxx.mp4" download="test">下载文件</a>

3.xhr(axios)下载

这个时候,请求发送的时候需要注明responseType = "blob",如果没有设置的情况下,new Blob的时候需要传入第二个参数。比如new Blob([res], { type: xhr.getResponseHeader("Content-Type") });

只是这时后端就没法通过body报错了。只能通过状态码和响应头来传递信息了。

最后我还是选择用json来传递信息,设置这个responseType: 'blob',以后,返回值会被转为blob,这时我们log可以看到type,是application/json的情况就是报错的情形。然后我们转化一遍json可以拿到报错信息,其实也可以把这个逻辑加到axios拦截器里面

export const DOWNLOAD_ITEM = async (data: FileItem): Promise<any> => {const res: Blob = await request.post(`${PROXY_SUFFIX}/downloadItem`, data, {responseType: 'blob',})// json的情况说明是报错if (res.type !== 'application/json') {downloadFile(res, data.name)} else {const r = await res.text()message.error(JSON.parse(r)?.msg)}
}

这边我后端用的是golang的gin框架

返回文件流调用c.File,文件类型不用传,c.Header("Content-Disposition", "attachment; filename="+req.Name)这个设置可以返回文件名。

func (f *FileListAPI) DownloadItem(c *gin.Context) {var req response.FileInfoerr := c.ShouldBindJSON(&req)if err != nil {response.FailWithMessage(err.Error(), c)return}if req.Path == "" {response.FailWithMessage("路径不能为空", c)return}if req.IsFolder {response.FailWithMessage("路径不能为文件夹", c)return} else {c.Header("Content-Disposition", "attachment; filename="+req.Name)// c.Header("Content-Transfer-Encoding", "binary")// c.Header("Content-Type", "application/octet-stream")c.File(req.Path)}fmt.Println("req", req)}

下面是blob对象下载的逻辑,使用createObjectURL转换为url,然后绑到a链接上,通过点击a链接的方式触发下载。

/*** 使用bolb方式下载* @param res* @param filename* @returns*/
export function downloadFile(res: Blob, filename: string) {const url = window.URL.createObjectURL(new Blob([res]))const a = document.createElement('a')a.style.display = 'none'a.href = urla.download = filenamedocument.body.appendChild(a)a.click()document.body.removeChild(a)window.URL.revokeObjectURL(url) // 释放blob对象
}
http://www.yayakq.cn/news/166429/

相关文章:

  • 前端开发学习网站做设计最好的参考网站
  • 武清做网站的公司用html5的视频网站
  • 网站 建设运行情况php做网站参考文献
  • 做农业需关注什么网站html5用什么软件
  • 网站建设简称什么新站seo快速排名 排名
  • 不同性质网站的营销特点一览表产品宣传视频怎么制作
  • 小牛门户网站众筹平台网站搭建
  • 新网站如何备案广州中英文网站建设
  • 网站建设是不是要有营业执照torrent种子搜索引擎
  • 延庆网站制作山东联通网站备案
  • 莱芜做网站公司纯净软件网站推荐
  • 网站公司建设个服务号多少钱商务网站规划与设计实训心得
  • 出国游做的好的网站施工企业资质证书延期
  • 网站制作农业十大网站
  • 北京网站建设多少钱南京优质网站建设方案
  • 网站浏览历史能恢复吗怎么设置深圳注册公司去哪里注册
  • 网站建设需求分析高端的丹阳网站建设
  • 西安网站设计师网站程序组成
  • 快速建站平台游戏公司做网站
  • 聊城那里有做网站网站建设介绍ppt模板下载
  • 如何理解电子商务网站建设与管理小制作作文400字
  • 黄埔做网站要多少钱湖南汉泰建设有限公司网站
  • 莱芜网上服务北京网站seo设计
  • 免费网站排名大全天元建设集团有限公司技术中心
  • centos7系统做网站网上帮做一些小事赚零花钱的网站
  • 网站域名后缀意义怎么创建免费网站吗
  • 外贸做平台好还是自己建网站好seo攻略
  • 网站建设哪些网站可以制作网站的走马灯怎么做
  • 上海广告公司官网关键词在线优化
  • 遵义祥云平台网站建设商城模板网站模板