2017-03-23 67 views
1

我想從Jhipster應用程序中的服務器下載文件(.docx)。 我直接從服務器發回二進制內容。使用jhipster應用程序中的window.location下載文件

@GetMapping("/file/{id}") 
@Timed 
public void getFile(@PathVariable Long id, HttpServletResponse response) throws URISyntaxException, IOException { 
    FileInputStream stream = fileService.getFile(id); 
    response.setContentType("application/vnd.openxmlformats-officedocument.wordprocessingml.document"); 
    IOUtils.copy(stream,response.getOutputStream()); 
    stream.close(); 
} 

我想現在用戶能夠下載文件。

在我的網頁之一的控制器我加入這個功能,來測試下載(或者我直接輸入瀏覽器的網址):

function dwl (id) { 
    window.location = "http://localhost:8080/#/file/"+id; 
} 

但我重定向到主頁,並沒有操作在服務器和客戶端都完成。

你能幫我在網址上提出請求嗎?

+1

你是否檢查過你的類沒有'@RequestMapping(「/ api」)'註釋,因爲JHipster生成的資源有? –

回答

1

http://localhost:8080/#/file/123不是http://localhost:8080/file/123相同的URL。

前者只加載​​與/file/123location hash,而實際上http://localhost:8080/file/123發送到您的服務器發送請求的/file/123路徑。

要下載的文件,你需要將用戶導航到後者:

window.location = "http://localhost:8080/file/" + id; 

這就是說,你可能不想讓他們離開你的應用程序 - 在這種情況下,你可能會更好關閉使用window.open

+0

如果我嘗試沒有#我得到一個錯誤404沒有找到(即使在我的應用程序的其他網址)。這是一個由Jhipster生成的應用程序。 –

+0

您與Maziou評論的答案做了訣竅,謝謝。 –

+0

@C.Cam:有幾個問題混在一起的問題總是很棘手 - 很高興我們可以幫助:) –

相關問題