在 MVC 中下载 doc 文件

download doc file in MVC

我有一个应用程序,它是 MVC 4 + Web Api + SQL 服务器的组合。 我正在尝试将 doc 文件下载到 MVC,但我已经尝试了以下步骤。 我有 Web API,我在其中编写了以下代码。当我发送 rowid 时,它的值作为 varbinary 存储在数据库中。文件格式可以是任何格式,如 .doc、pdf 等...但是我正在寻找第一个 doc 或 PDF 文件格式。

当我调用 Web api 时,它会创建 PDF 文件并下载它,但文件已完全损坏。

  [ResponseType(typeof(MandateExceptionDO))]       
  [HttpGet]
  [Route("api/DealingMandate/GetExceptionDoc/{rowId}")]
  public HttpResponseMessage GetExceptionDoc(int rowId)
  {
     IDealingMandates repository = new DealingMandatesRepository();
     List<MandateExceptionDO> mandateexceptiondoc =new  List<MandateExceptionDO>();
     mandateexceptiondoc = repository.GetExceptionDoc(rowId);
     HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
     //response.Content = new ByteArrayContent(mandateexceptiondoc[0].Content);
     //response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("multipart/form-data");

    //byte[] fileBytes = System.IO.File.ReadAllBytes(mandateexceptiondoc[0].Content);
    response.Content = new ByteArrayContent(mandateexceptiondoc[0].Content);
    response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
    response.Content.Headers.ContentDisposition.FileName = "testing.pdf";
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/pdf");
    //return Ok(mandateexceptiondoc);
    return response;
   }

我可以在网上解决这个问题 api 我将字节作为字符串,如下所示

  String doc = Convert.ToBase64String(customermandate.Content);

对于 MVC 端,我从字符串

转换回字节
 var doc = restClient.Execute(request);
             var response = doc.Content.Substring(1, doc.Content.Length - 2).Replace(@"\/", "/");
  byte[] docBytes = Convert.FromBase64String(response);
             if (doc.Content != null && doc.Content.Length > 0 && !string.IsNullOrEmpty(doc.Content))
             {
                 Response.Clear();    
                 Response.ContentType = "application/pdf";
                 Response.AddHeader("content-disposition", "attachment; filename=" + FileName);
                 Response.BinaryWrite(docBytes);    
                 Response.End();
          }