使用Spring Boot进行CSV下载

首先 .

尝试使用Springboot实现CSV下载功能时,发现了几种方法。在使用Spring的虚拟Tomcat上成功运行,但实际部署到服务器上的Tomcat上却无法运行。以下是总结的情况。

环境

    • apache Tomcat

 

    • Spring-Boot 1.5.9

 

    Java 8

源代码

    HTML, javaScript(ボタン押すだけです)
<form id="csvform" method="post">
    <button type="button" onClick="downloadCSV();"><img id="MORDAL_OKBUTTON_ICON"></img>確定</button>
</form>
<script>
function downloadCSV(){
    var date = new Date();
    var file_title = addzero(date.getFullYear())+addzero(date.getMonth()+1)+addzero(date.getDate())+addzero(date.getHours())+addzero(date.getMinutes())+addzero(date.getSeconds());
    url= "csvdownload";
    $('#csvform').attr('action', url);
    $('#csvform').attr('method', "GET");
    $('#csvform').submit();
}

function addzero(text){
    text = String(text);
    if(text.length==1){
        text = "0"+text;
    }
    return text;
}
</script>

    java

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class CsvController {

    @RequestMapping(value = "/csvdownload/csv", method = RequestMethod.GET)
    public ResponseEntity<byte[]> download(
            @RequestParam("csvsearchname") String csvsearchname) throws IOException {
        HttpHeaders h = new HttpHeaders();
        h.add("Content-Type", "text/csv; charset=MS932");
        String  filename = csvsearchname;
        h.setContentDispositionFormData("filename", filename + ".csv");
        String CSVData = null;
        try{
            StringBuilder CSV = new StringBuilder();

            CSV.append("ssss");
            CSV.append("aaaa");
            CSVData =CSV.toString();

        }catch(Exception e){
            System.out.println(e);
            CSVData = null;
        }
        return new ResponseEntity<>(CSVData.getBytes("MS932"), h, HttpStatus.OK);
    }
}

结束

CSVダウンロード機能は、多くのシステムに含まれており、頻繁に使用される機能ですが、
* ファイルを生成し、それをダウンロードさせる方法
* バイトデータのまま返す方法(今回の方法)
* その他の方法
など、さまざまな方法があると考えられますので、開発環境と希望する方法に合わせて選択してください。

bannerAds