2017-07-14 94 views
0

我正在Angular 2上做一個項目,我正在開始實施一個下載方法,但在測試時我注意到我的服務器沒有獲取文件的路徑。我可能犯了一個我沒有看到的錯誤。 這是我的代碼:Angular2 - 沒有收到服務器上的帖子參數

.component.ts

downloadFile(filePath: string): void{ 
    this.dataImportService.downloadFile(filePath) 
     .then(data => { 
      console.log(data); 
     }); 
} 

dataImportService.ts

downloadFile(filePath: string): any{ 
return this.http.post(SERVICE_URL + 'DataImport/downloadFile', filePath) 
    .toPromise() 
    .then(response => { 
    return response.json().ReturnStatus.ReturnObject; 
    }) 
    .catch(this.handleError); 
} 

分析鉻控制檯上的帖子,正在發送的文件路徑,但是,當它得到我的服務器(C#API)它爲空。

DataImportController.cs

[HttpPost] 
    public void downloadFile(string path) 
    { 

     try 
     { 
      string extension = Path.GetExtension(path).Substring(1); 
      string fileName = Path.GetFileName(path); 

      HttpResponse response = System.Web.HttpContext.Current.Response; 
      response.Clear(); 
      response.ClearHeaders(); 
      response.AddHeader("Content-Type", Utils.MimeTypesConverter.GetMimeType(extension)); 
      response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\""); 
      response.TransmitFile(Server.MapPath(path)); 

      response.End(); 
     } 
     catch (Exception ex) 
     { 
      Response.Write(ex.Message); 
      return; 
     } 


    } 

有什麼建議? 非常感謝您的幫助。

+1

通過查詢字符串,'this.http.post(SERVICE_URL + 'DataImport/downloadFile?文件路徑=' + filePath' – anoop

+0

通並改變方法得到?因爲http.post需要更多的參數 –

回答

1

您發送的發佈數據只是一個字符串。發佈數據應該是關鍵值對,那麼只有您可以指定您在後端實現中引用哪個後期數據項。通常情況下,後期數據項是JSON類型的,你的情況是可以像

{'file_path': "path/to/the/file"} 
+0

我差不多嘗試過了,我沒有{path:filePath}謝謝你的幫助! –

+0

不客氣,很高興幫助你:) – kisanme