Javascript 通过jquery从java下载文件

Javascript 通过jquery从java下载文件,javascript,java,jquery,file,Javascript,Java,Jquery,File,我在jquery下载文件时遇到问题 我有一个post函数,在java代码中发送请求 我返回了文件,但没有下载 输入 <input type="button" id="export-csv" value="Export result in CSV"/> Java代码 @RequestMapping(value="/user/writeCsv",method=RequestMethod.POST) public FileWriter writeCSVFile(H

我在jquery下载文件时遇到问题

我有一个post函数,在java代码中发送请求

我返回了文件,但没有下载

输入

        <input type="button" id="export-csv" value="Export result in CSV"/>
Java代码

@RequestMapping(value="/user/writeCsv",method=RequestMethod.POST)
    public FileWriter writeCSVFile(HttpServletResponse   response,ServerSearchCommand ssc, Model model, BindingResult result) throws IOException {

FileWriter fileWriter= new FileWriter("/tmp/searchcsv.csv");
fileWriter.flush();

    //WRITE DATA FILE 


    fileWriter.close();
    return fileWriter;
}

你根本不能。使用Ajax时,由于安全原因,无法下载文件。您所能做的就是提交表单请求。

如果您不想提交表单,您可以在get请求中编写响应对象中的文件:-

@RequestMapping(value="/user/writeCsv",method=RequestMethod.Get)
public void writeCSVFile(HttpServletResponse   response,ServerSearchCommand ssc, Model model, BindingResult result) throws IOException {

OutputStream outStream = response.getOutputStream();
 // Write data to this outStream
 outStream.close();
} 
在前端,将文件附加到iFrame并使iFrame stye=display:none:-

    var url = contextPath + "/user/writeCsv";
   var hiddenIFrameID = 'frameid',
    iframe = document.getElementById(hiddenIFrameID);
    if (iframe === null) {
        iframe = document.createElement('iframe');
        iframe.id = hiddenIFrameID;
        iframe.style.display = 'none';
        document.body.appendChild(iframe);
    }
    iframe.src = url;

非常感谢大家!你好:)我该怎么办?@marcoajax不直接支持它,但有一些解决方法
    var url = contextPath + "/user/writeCsv";
   var hiddenIFrameID = 'frameid',
    iframe = document.getElementById(hiddenIFrameID);
    if (iframe === null) {
        iframe = document.createElement('iframe');
        iframe.id = hiddenIFrameID;
        iframe.style.display = 'none';
        document.body.appendChild(iframe);
    }
    iframe.src = url;