1

*嗨,我正在尝试编写一个 Ajax 页面,该页面解密服务器上的加密文件并下载它。现在我的代码解密并下载文件。但问题是下载的文件与Ajax Page的文件名相同。下面是将文件下载到本地机器的代码。为了避免混淆,我没有包含解密代码。*

String fileName="/home/maclean/NetBeansProjects/SecureCloud/build/web/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

请让我知道我做错了什么以及如何获得相同的文件名。

4

1 回答 1

1

由于您没有为下载指定文件名,因此浏览器会选择一个(基于当前 URL)。您可以通过将 HTTP 标头设置Content-Disposition为:

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

于 2013-02-28T08:12:27.193 回答