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