后端:
/// <summary> /// 下载文件 /// </summary> /// <param name="docGuid">影像资料guid</param> /// <returns></returns> [AcceptVerbs("GET", "POST")] [HttpPost, Route("Download2")] public HttpResponseMessage Download2(string docGuid, string docName) { MediaTypeHeaderValue _mediaType = MediaTypeHeaderValue.Parse("application/octet-stream");//指定文件类型 ContentDispositionHeaderValue _disposition = ContentDispositionHeaderValue.Parse("attachment;filename=" + System.Web.HttpUtility.UrlEncode(docName));//指定文件名称(编码中文) try { string tmpName = Util.BaseDirectory.TrimEnd('\\') + "\\tmp\\" + docGuid + Util.GetFileExt(docName); if (!File.Exists(tmpName)) throw new HttpResponseException(HttpStatusCode.NotFound); FileStream fileStream = new FileStream(tmpName, FileMode.Open); HttpResponseMessage fullResponse = Request.CreateResponse(HttpStatusCode.OK); fullResponse.Content = new StreamContent(fileStream); fullResponse.Content.Headers.ContentType = _mediaType; fullResponse.Content.Headers.ContentDisposition = _disposition; return fullResponse; } catch (Exception ex) { Logger.Error(ex); throw new HttpResponseException(HttpStatusCode.NotFound); } }
前端:
var url = UrlList.BaseUrl + UrlList.AfterLoanUrl + "CustLoanDoc/Download2?docGuid=" + cur.movedoc.DocGuid + "&docName=" + cur.movedoc.DocName;//指向webApi方法路径 var link = document.createElement('a'); link.href = url; link.click(); window.URL.revokeObjectURL(link.href);