import org.seasar.struts.util.ResponseUtil; is = new FileInputStream(file); ResponseUtil.download(getDecodeFileName(fileName), is, (int)file.length());
seasar2 では、上記のように、ResponseUtil.download() でファイルダウンロードできましたが spring では、多分、以下。
ただし、excel のダウンロードに限っては、 apache poi に付属する AbstractXlsxView を利用する方法もあります。
package jp.end0tknr; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.io.IOUtils; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class MyRestController { @Autowired XlsxOutService xlsxOutService; @RequestMapping(value="/index6") public void index6( HttpServletRequest request, HttpServletResponse response, Model model) { System.out.println("START index6"); Workbook workBook = xlsxOutService.outXlsx(); FileOutputStream out; try { workBook.write( new FileOutputStream("./TEXT_POI.XLSX") ); } catch (FileNotFoundException e) { e.printStackTrace(); return; } catch (IOException e) { e.printStackTrace(); return; } try { InputStream inputStream = new FileInputStream("./TEXT_POI.XLSX"); OutputStream outputStream = response.getOutputStream(); byte[] fileByteArray = IOUtils.toByteArray(inputStream); response.setContentType("application/octet-stream"); response.setHeader( "Content-Disposition", "attachment; filename=TEXT_POI.XLSX"); response.setContentLength(fileByteArray.length); outputStream.write(fileByteArray); outputStream.flush(); } catch (FileNotFoundException e) { e.printStackTrace(); return; } catch (IOException e) { e.printStackTrace(); return; } } }
尚、上記では、IOUtils.toByteArray() を使用していますので、 pom.xml へ commons-io を追加してください。
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.9.0</version> </dependency>