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

淄博网站建设推广惠州搜索引擎优化

淄博网站建设推广,惠州搜索引擎优化,金融股票类app网站开发,合肥做公司网站一般多少钱先获取文件大小,然后将文件切片传输给前端,前端再按顺序组合所有切片。 vue /** 下载数据 */handleDownloadInstance(id, instanceName) {if (this.downloadProgressisVisible) {this.$showError(已经有文件在下载!)return}this.$showInfo(开始下载!)ge…

先获取文件大小,然后将文件切片传输给前端,前端再按顺序组合所有切片。

vue

    /** 下载数据 */handleDownloadInstance(id, instanceName) {if (this.downloadProgressisVisible) {this.$showError('已经有文件在下载!')return}this.$showInfo('开始下载!')getFileSize(id).then((response) => {this.downloadProgressisVisible = trueconst fileSize = response.sizethis.fileSize = fileSizethis.downloadPercentage = 0this.currentSize = 0console.log(response)// 计算分片数和每片大小const chunkSize = 10 * 1024 * 1024 // 10 MBconst totalChunks = Math.ceil(fileSize / chunkSize)// 保存所有分片的数据const allChunks = new Array(totalChunks)const self = thislet num = 0// 下载所有分片function downloadChunks() {for (let i = 0; i < totalChunks; i++) {const data = {start: i * chunkSize,end: (i + 1) * chunkSize - 1}downloadInstanceChunk(id, data).then(response => {return response}).then(chunkBlob => {// 保存分片数据allChunks[i] = chunkBlobnum += 1// console.log('下载完成', i)// 检查是否所有分片都下载完成if (num === totalChunks) {mergeChunks()self.$showSuccess('下载成功!')self.downloadProgressisVisible = false}self.downloadPercentage = Math.floor((num) / totalChunks * 100)self.currentSize = num * chunkSize}).catch(error => {console.error('Error:', error)self.downloadProgressisVisible = falseself.$showError('下载文件失败:' + error.data.message)})}}// 合并所有分片function mergeChunks() {// 创建一个 Blob 对象,包含所有分片数据const mergedBlob = new Blob(allChunks, { type: 'application/zip' })// 创建下载链接并模拟点击const downloadLink = document.createElement('a')downloadLink.href = URL.createObjectURL(mergedBlob)const fileName = `${instanceName}.zip`downloadLink.download = fileNamedownloadLink.click()}// 调用下载分片函数downloadChunks()}).catch(err => {console.log(err)this.$showError('下载文件失败:' + err.data.message)this.downloadProgressisVisible = false})},

go

func (handler *Handler) getFileSize(w http.ResponseWriter, r *http.Request) *httperror.HandlerError {instanceID, err := request.RetrieveNumericRouteVariableValue(r, "id")if err != nil {return &httperror.HandlerError{StatusCode: http.StatusBadRequest, Message: "Invalid instance identifier route variable", Err: err}}instance, err := handler.DataStore.Instance().Instance(uint(instanceID))if err == bolterrors.ErrObjectNotFound {return &httperror.HandlerError{StatusCode: http.StatusNotFound, Message: "Unable to find a instance with the specified identifier inside the database", Err: err}} else if err != nil {return &httperror.HandlerError{StatusCode: http.StatusInternalServerError, Message: "Unable to find a instance with the specified identifier inside the database", Err: err}}// timeStr := instance.ReportTime.Format("2006-01-02 15:04:05")// timeStr = strings.Replace(timeStr, ":", "-", -1)// timeStr = strings.Replace(timeStr, " ", "-", -1)dirPath := instance.TempPathzipPath := instance.InstanceName + ".zip"zipPath = "/home/1.zip"dirPath = "/home/if !utils.DirExists(dirPath) {return &httperror.HandlerError{StatusCode: http.StatusNotFound, Message: "文件不存在", Err: fmt.Errorf("文件不存在")}}_, err = os.Stat(zipPath)if err != nil {err = utils.ZipDir(dirPath, zipPath, []string{".pcap"})if err != nil {return &httperror.HandlerError{StatusCode: http.StatusInternalServerError, Message: "压缩文件失败", Err: fmt.Errorf("压缩文件失败")}}}fileInfo, err := os.Stat(zipPath)if err != nil {return &httperror.HandlerError{StatusCode: http.StatusInternalServerError, Message: "os.Stat 失败", Err: err}}return response.JSON(w, map[string]int64{"size": fileInfo.Size(),})
}func (handler *Handler) downloadInstanceChunk(w http.ResponseWriter, r *http.Request) *httperror.HandlerError {instanceID, err := request.RetrieveNumericRouteVariableValue(r, "id")if err != nil {return &httperror.HandlerError{StatusCode: http.StatusBadRequest, Message: "Invalid instance identifier route variable", Err: err}}start, err := request.RetrieveNumericRouteVariableValue(r, "start")if err != nil {return &httperror.HandlerError{StatusCode: http.StatusBadRequest, Message: "Invalid instance identifier route variable", Err: err}}end, err := request.RetrieveNumericRouteVariableValue(r, "end")if err != nil {return &httperror.HandlerError{StatusCode: http.StatusBadRequest, Message: "Invalid instance identifier route variable", Err: err}}instance, err := handler.DataStore.Instance().Instance(uint(instanceID))if err == bolterrors.ErrObjectNotFound {return &httperror.HandlerError{StatusCode: http.StatusNotFound, Message: "Unable to find a instance with the specified identifier inside the database", Err: err}} else if err != nil {return &httperror.HandlerError{StatusCode: http.StatusInternalServerError, Message: "Unable to find a instance with the specified identifier inside the database", Err: err}}// timeStr := instance.ReportTime.Format("2006-01-02 15:04:05")// timeStr = strings.Replace(timeStr, ":", "-", -1)// timeStr = strings.Replace(timeStr, " ", "-", -1)dirPath := instance.TempPathzipPath := instance.InstanceName + ".zip"zipPath = "/home/1.zip"dirPath = "/home/test"if !utils.DirExists(dirPath) {return &httperror.HandlerError{StatusCode: http.StatusNotFound, Message: "文件不存在", Err: fmt.Errorf("文件不存在")}}// err = utils.ZipDir(dirPath, zipPath, []string{".pcap"})if err != nil {return &httperror.HandlerError{StatusCode: http.StatusInternalServerError, Message: "压缩文件失败", Err: fmt.Errorf("压缩文件失败")}}fileInfo, err := os.Stat(zipPath)if err != nil {return &httperror.HandlerError{StatusCode: http.StatusInternalServerError, Message: "os.Stat 失败", Err: err}}// 计算最后一片的范围if end == 0 || int64(end) > fileInfo.Size() {end = int(fileInfo.Size()) - 1}zipFile, err := os.Open(zipPath)if err != nil {return &httperror.HandlerError{StatusCode: http.StatusInternalServerError, Message: "文件无法打开", Err: fmt.Errorf("文件无法打开")}}defer zipFile.Close()w.Header().Set("Content-Type", "application/zip")// w.Header().Set("Content-Type", "application/octet-stream")// w.Header().Set("Content-Length", strconv.FormatInt(fileInfo.Size(), 10))// 设置响应头部,指定传输的范围w.Header().Set("Content-Range", "bytes "+strconv.FormatInt(int64(start), 10)+"-"+strconv.FormatInt(int64(end), 10))w.WriteHeader(http.StatusPartialContent)// 将部分内容传输到客户端_, err = zipFile.Seek(int64(start), 0)if err != nil {return &httperror.HandlerError{StatusCode: http.StatusInternalServerError, Message: "Unable to seek to the specified position", Err: err}}io.CopyN(w, zipFile, int64(end)-int64(start)+1)return response.Empty(w)
}

http://www.dtcms.com/wzjs/272456.html

相关文章:

  • 东莞建站网站模板怎么让某个关键词排名上去
  • 岳阳网站开发培训百度竞价排名案例分析
  • 政府网站建设安全html网页制作步骤
  • 做网站要素站长seo综合查询工具
  • 超简单做网站软件游戏推广怎么快速拉人
  • 有哪些电商网站营销网页设计公司
  • 网站功能建设与栏目划分建站模板免费下载
  • 长沙网站推广排名江苏网站建设制作
  • 常见的独立站建站工具有哪些淘宝关键词排名查询网站
  • 自己创建的网站怎么做流量竞价排名名词解释
  • 做百度网站找谁国家免费技能培训官网
  • 做网站建设的公司中国企业网
  • 帮人做违法网站百度云引擎搜索
  • wordpress 工具云seo
  • 无锡住房和城乡建设厅网站写软文赚钱的平台都有哪些
  • 成都网站制作的公司唐山公司做网站
  • 网络公司做的网站被告图片侵权市场调研报告范文模板
  • php网站开发编程软件推广链接怎么制作
  • 网站建设满意度问卷调查新网域名注册
  • 个人网站建设 优帮云cnzz
  • 零食网站模板百度网站怎么申请注册
  • 包装产品做网站十大经典营销案例
  • 如何用rp做网站市场营销在线课程
  • 社交网站先做pc站可以吗关键词录入榜
  • 企业建设营销网站的基本步骤企业推广视频
  • 网站商城建设价格百度竞价排名又叫什么
  • 百度收录删除旧网站谷歌搜索引擎免费入口 台湾
  • 大疆网站建设seo线上培训多少钱
  • 做ppt赚钱网站营销渠道分为三种模式
  • 做网页设计需要学什么西安seo服务外包