• vue 下载文件


    /// <summary>
            /// 获取文件信息
            /// </summary>
            /// <param name="token">登录Token</param>
            /// <returns></returns>
            [HttpGet]
            public HttpResponseMessage fileDownload(String token, String url, Boolean bTemp = false)
            {
                Object result = null;
                String tempPath = String.Empty;
                String temPath1 = String.Empty;
                try
                {
                    LoginUser loginUser = GetCurrentLoginUser(token);
                    String file = HttpContext.Current.Request.MapPath(url);
                    tempPath = HttpContext.Current.Request.MapPath(String.Format("/upload/Temp/{0}/", loginUser.Uid));
                    temPath1 = String.Format("{0}/Template/", tempPath);
                    FileInfo fileInfo = new FileInfo(file);
                    if (!Directory.Exists(temPath1))
                    {
                        Directory.CreateDirectory(temPath1);
                    }
                    fileInfo.CopyTo(temPath1 + fileInfo.Name);
    
                    using (FileStream filestream = new FileStream(temPath1 + fileInfo.Name, FileMode.Open))
                    {
                        byte[] bt = new byte[filestream.Length];
    
                        //调用read读取方法
                        filestream.Read(bt, 0, bt.Length);
                        var base64Str = Convert.ToBase64String(bt);
    
                        result = new { name = Path.GetFileName(file), dataStr = base64Str };
                    }
                    String[] strs = url.Split("/".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                    String fileName = strs[strs.Length - 1];
                    String msg = String.Empty;
                    if (bTemp)
                    {
                        msg = String.Format("用户【{0}】下载了模板文件【{1}】", loginUser.User.FullName, fileName);
                    }
                    else
                    {
                        String pjName = strs[1] + "-" + strs[2];
                        String moduleName = strs.Length > 3 ? strs[strs.Length - 3] : "";
                        msg = String.Format("用户【{0}】下载了项目【{1}】的【{2}】文件【{3}】", loginUser.User.FullName, pjName, moduleName, fileName);
                    }
                    LogHelper.LogOperate(msg, Constant.OPEARTE_LOG_INFO, loginUser);
                }
                catch (Exception ex)
                {
                    AppLog.Error(ex);
                    return JsonResultModel(Result_Error, ex.Message, null);
                }
                finally
                {
                    if (!String.IsNullOrEmpty(temPath1))
                    {
                        // 删除临时文件夹
                        Directory.Delete(temPath1, true);
                    }
                }
    
                return JsonResultModel(Result_Success_Code, Result_Success_MSG, result);
            }
    

      

    // 下载文件
    export function fileDownload(params) {
      return request({
        url: '/Common/fileDownload',
        method: 'get',
        params
      })
    }
    

      

        downLoadFile(row) {
          var ext = extName(row.name).toLocaleLowerCase()
          if (ext === 'jpg' || ext === 'jpeg' || ext === 'png' || ext === 'jfif') {
            this.dialogImageUrl = row.webUrl
            this.imgViewDialogVisible = true
          } else {
            var param = {
              token: getToken(),
              url: row.url
            }
            fileDownload(param).then(res => {
              if (res.code === 20000) {
                downloadFile(res.data.name, res.data.dataStr)
              }
            })
          }
        }
    

      

    /*
    * 下载文件
    */
    export function downloadFile(fileName, content) {
      const aLink = document.createElement('a')
      const blob = base64ToBlob(content) // new Blob([content]);
    
      const evt = document.createEvent('HTMLEvents')
      evt.initEvent('click', true, true)// initEvent 不加后两个参数在FF下会报错  事件类型,是否冒泡,是否阻止浏览器的默认行为
      aLink.download = fileName
      aLink.href = URL.createObjectURL(blob)
    
      // aLink.dispatchEvent(evt);
      aLink.click()
    }
    
    // base64转blob
    export function base64ToBlob(code) {
      const parts = code.split(';base64,')
      const contentType = parts[0].split(':')[1]
      const raw = window.atob(parts[0])
      const rawLength = raw.length
    
      const uInt8Array = new Uint8Array(rawLength)
    
      for (let i = 0; i < rawLength; ++i) {
        uInt8Array[i] = raw.charCodeAt(i)
      }
      return new Blob([uInt8Array], { type: contentType })
    }
    

      

  • 相关阅读:
    pdf 去水印 比较好用
    ffmpeg从视频中每隔几秒提取一张图片
    tampermonkey 网盘直链下载助手
    淘工厂买的usb 蓝牙5.0 外置台式机 适配器(下载)
    Apache Doris 轻松入门和快速实践
    一步一步编译最新版Apache Doris 0.15版本的详细过程
    go使用msgpack
    服务接口杂谈
    关于真伪3层所讨论的
    jattach最近的一些更新
  • 原文地址:https://www.cnblogs.com/byron-123/p/14268990.html
Copyright © 2020-2023  润新知