后端:
/// <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);