2013-02-28 72 views
1

*您好,我 正在嘗試寫一個解密服務器,並下載其上的加密文件的Ajax網頁。現在我的代碼解密並下載文件。但問題是下載的文件與Ajax頁面具有相同的名稱。 下面是將文件下載到本地機器的代碼。爲了避免混淆,我沒有包含解密代碼。 *在從AJAX頁面下載文件的文件具有相同的名稱作爲Ajax網頁上下載

字符串文件名= 「/家/麥克萊恩/的NetBeansProjects/SecureCloud /編譯/網絡/ SecureCloud /」 + DATA.TXT;

這條線的服務器

 response.setContentType("APPLICATION/DOWNLOAD"); 
     response.setContentLength(in.available()); 
     int length; 
     byte[] buffer = new byte[4096]; 

      while ((length = in.read(buffer)) > 0){ 
       data=new String(buffer); 
       buffer =decryptCaesar.Decrypt(data,shiftKey).getBytes(); 
os.write(buffer, 0, buffer.length); 
System.out.println(buffer); 
} 
response.setHeader("Content-Disposition","attachment; filename="+FileName); 

在聲明文件的位置和該行下載文件。但是下載的文件的名稱是AjaxRead.jsp,它是Ajax頁面的名稱,而原始文件名是Data.txt

請讓我知道我做錯了什麼以及如何獲取相同的文件名稱。

回答

1

由於您沒有爲下載指定文件名,瀏覽器會選擇一個(基於當前URL)。您可以通過將HTTP標頭Content-Disposition設置爲覆蓋文件名:

response.setHeader("Content-Disposition","attachment; filename=Data.txt")

+0

我使用了這個response.setHeader(「Content-Disposition」,「attachment; filename = Data.txt」)但它仍然以同樣的方式工作,文件名仍然是Ajax的名字Page – 2013-02-28 08:21:55

+0

您可以在上面看到I已經將內容沉積設置爲文件名稱。所以我想這不是問題。 – 2013-02-28 08:26:33

+0

您確實從瀏覽器獲得了下載(即瀏覽文件保存)對話框,是嗎?你建議默認/建議的文件名是jsp而不是Data.txt? – Cascader 2013-02-28 08:29:25