この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:2
ページ更新者:T
更新日時:2026-05-15 03:52:15

タイトル: CSVファイルのダウンロード
SEOタイトル: PHP / Laravel で CSV ファイルをダウンロードする方法

この本文には実行可能なタグ等が含まれるため、安全のためHTMLソースとして表示しています。本文データは変更していません。

<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
	<thead>
		<tr><th style="background-color:#f39c12;color:#ffffff;text-align:left">この記事の要点</th></tr>
	</thead>
	<tbody>
		<tr>
			<td style="background-color:#fef9e7">
			<ul>
				<li>Java/Spring + Ajax で<strong>CSV ファイルをダウンロード</strong>する実装パターン</li>
				<li>クライアント: <code>$.ajax</code> でリクエスト、<strong>Blob として受け取り</strong>てダウンロード</li>
				<li>サーバ: <code>Content-Type: text/csv</code> + <code>Content-Disposition: attachment; filename=...</code></li>
				<li>Excel の文字化け対策に<strong>UTF-8 BOM</strong> 付与が定石(先頭に <code>\uFEFF</code>)</li>
			</ul>
			</td>
		</tr>
	</tbody>
</table>

<p>&nbsp;</p>



<p>本稿は<strong>Ajaxを用いたCSVファイルのダウンロード方法</strong>を記載します。</p>

<p>尚、実装例のサーバーサイド言語はJavaのSpring Frameworkとします。(適宜読み替えて下さい。)</p>

<p>&nbsp;</p>

<h2>HTML</h2>

<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
	<tbody>
		<tr>
			<td style="background-color:#000000">
			<p><span style="color:#ffffff"><button id="download" type="submit">ダウンロード</button></span></p>
			</td>
		</tr>
	</tbody>
</table>

<p>&nbsp;</p>

<h2>Javascript</h2>

<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
	<tbody>
		<tr>
			<td style="background-color:#000000">
			<p><span style="color:#ffffff">$("#download").click(function() {<br />
			&nbsp;&nbsp; &nbsp;$.ajax({<br />
			&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;method: 'post',<br />
			&nbsp; &nbsp; &nbsp; &nbsp; url: 'csvDownload',</span></p>

			<p><span style="color:#ffffff">&nbsp;&nbsp; &nbsp;}).done(function(data, status, jqXHR) {<br />
			&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;let downloadData = new Blob([data], {type: 'text/csv'});<br />
			&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;let filename = 'test.csv'</span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; &nbsp; &nbsp; let downloadUrl &nbsp;= (window.URL || window.webkitURL).createObjectURL(downloadData);<br />
			&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;let link = document.createElement('a');<br />
			&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;link.href = downloadUrl;<br />
			&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;link.download = filename;<br />
			&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;link.click();<br />
			&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;(window.URL || window.webkitURL).revokeObjectURL(downloadUrl);</span></p>

			<p><span style="color:#ffffff">&nbsp;&nbsp; &nbsp;});<br />
			}<br />
			);</span></p>
			</td>
		</tr>
	</tbody>
</table>

<p>&nbsp;</p>

<h2>Java</h2>

<table border="1" cellpadding="1" cellspacing="1" style="width:1000px">
	<tbody>
		<tr>
			<td style="background-color:#000000">
			<p><span style="color:#ffffff">@RequestMapping("csvDownload")<br />
			public void csvDownload(HttpServletResponse response) {</span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; response.setContentType(MimeTypeUtils.APPLICATION_OCTET_STREAM_VALUE + ";charset=utf-8");<br />
			&nbsp; &nbsp; response.setHeader("Content-Disposition", "attachment; filename=\"test.csv\"");</span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; try (PrintWriter printWriter = response.getWriter()) {</span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; &nbsp; &nbsp; String str = "a" + "," + "1" + "\r\n";</span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; &nbsp; &nbsp; printWriter.print(str);</span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; } catch (IOException e) {</span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();</span></p>

			<p><span style="color:#ffffff">&nbsp; &nbsp; }<br />
			}</span></p>
			</td>
		</tr>
	</tbody>
</table>

<p>&nbsp;</p>