はじめまして。cakephpで制作しております。
csvファイルをダウンロードしようとしており、以下のようなコードを使用しておりますが、期待するデータが上手くダウンロードできません。
ファイルのパスは/file/list/csv/hoge/hoge.csv です。
$result = $this->_createCSV($mode, $auction_title, $data);
$file_url = "/" . $result;
$file = basename($file_url);
//$this->set("loading", 1);
//$this->set("file_path", $result);
header('Content-Type: application/x-csv');
header('Content-Disposition: attachment; filename="'. $file .'"');
header('Content-Transfer-Encoding: binary');
header('Content-Length: '.filesize($file));
readfile($file_url);
生成したcsvファイルを直接見てみると正常に値が入っているのですが、ダウンロードすると
pre class="cake-debug">
<a href='javascript:void(0);' onclick='document.getElementById("CakeStackTrace1").style.display = (document.getElementById("CakeStackTrace1").style.display == "none" ? "" : "none")'><b>Warning</b> (512)</a>: <span style = "color:Red;text-align:left"><b>SQL Error:</b> 1054: Unknown column 'EntryMember.user_id' in 'field list'</span> [<b>CORE\cake\libs\model\datasources\dbo_source.php</b>, line <b>525</b>]
</pre>
<div id="CakeStackTrace1" class="cake-stack-trace" style="display: none;"><a href='javascript:void(0);' onclick='document.getElementById("CakeErrorCode1").style.display = (document.getElementById("CakeErrorCode1").style.display == "none" ? "" : "none")'>Code</a> | <a href='javascript:void(0);' onclick='document.getElementById("CakeErrorContext1").style.display = (document.getElementById("CakeErrorContext1").style.display == "none" ? "" : "none")'>Context</a><pre id="CakeErrorContext1" class="cake-context" style="display: none;">$sql="SELECT `EntryMember`.`id`, `EntryMember`.`mail`, `EntryMember`.`temp_url`, `EntryMember`.`created`, `EntryMember`.`modified`, `EntryMember`.`user_id` FROM `entry_members` AS `EntryMember` WHERE `EntryMember`.`user_id` = (76) "
$error="1054: Unknown column 'EntryMember.user_id' in 'field list'"
$out=null</pre><div id="CakeErrorCode1" class="cake-code-dump" style="display: none;"><pre><code><span style="color: #000000">$out=null;</span></code>
<code><span style="color: #000000">if($error){</span></code>
<span class="・・・・・
のようなコードがぎっしり書き込まれた状態になります。
ファイルパスの問題か文字コードの問題だと思うのですが、どのように対処してよいか万策つきております。
どなたかご教示いただけますよう宜しくお願い致します。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
#3です。
根本的な所なのですが、通常CSVをダウンロードする際
ヘッダを設定し、readfile($file_url);などでファイルの中身を
標準出力すれば、そのファイルの中身がダウンロードファイルに
書かれています。
今回、サーバー上のファイルとダウンロードしたファイルが
違うという事なので、別物なのではないかと考えています。
ヘッダー部を全てコメントし、画面上にファイルの中身を
表示すればどうなりますか?
//header(...
ついでに
print $file_url . "<br>\n";
とか入れて、変数の中身の確認もした方がいいかもしれません。
あとついでに
>ダウンロードするのにファイルの文字コードとか関係あるのでしょうか。
>因みに、使用している文字コードはUTF-8でCSVファイルに書き込む時もUTF-8です。
CSVファイルをWindows上でExcel等で読まれる場合はSJISに変換して書き込んでください。
ExcelがUTF-8を認識しないので・・・
No.3
- 回答日時:
生成したcsvファイルとダウンロードするファイルは
本当に一緒でしょうか?
ダウンロードしたファイルの中に
SQL Error:1054: Unknown column 'EntryMember.user_id' in 'field list'
CORE\cake\libs\model\datasources\dbo_source.php, line 525
という記述があるので、生成時のデータ取得時にエラーになっているはずです。
一旦/file/list/csv/hoge/hoge.csvを削除し
もう一度生成して/file/list/csv/hoge/hoge.csvが存在するか
ご確認ください。
また、field list?にEntryMember.user_idが含まれていないようですので
追加するか取得内容から外すかして生成できるかの確認も
した方がいいかもしれません。
回答していただきありがとうございます。
SQL Error:1054: Unknown column 'EntryMember.user_id' in 'field list'については今回csvファイルを生成する際にデータは使用していません。
ただ、モデルで$hasManyをしているためEntryMemberのフィールドが無いから出ているのだと思っていますが、とりあえず使っていないので無視してました。これが影響しているのでしょうか。
No.2
- 回答日時:
cakePHPがデバッグ情報を出力しているようなので、これをオフにすればよいのでは。
設定できるはずです。これだけではダメだった気がするのですが思い出せません。
参考までに。
ご回答していただきありがとうございます。
debugを0にしてダウンロードしてみたところ、htmlソースが書き込まれた状態です。期待する値は含まれていませんでした。
ちなみに、ダウンロードボタンを押した時にデータをDBから読み込んでcsvを生成してダウンロード処理をしています。
生成したファイルを直接開いてみると期待する値ではありますが、文字化けしている状態なんです。
そのファイルをダウンロードしたところ上記のソースが書き込まれています。
No.1
- 回答日時:
まずは・・・
file_exists($file_url)
するところから
回答していただきありがとうございます。
file_exists($file_url)をしてみたところ、falseが返ってました。
$_SERVER['DOCUMENT_ROOT'] . "/file/list/csv/hoge/hoge.csv"で
返り値をtrueにしてダウンロードしてみたんですが、ファイルの内容は
ブラウザで表示されている内容が全て書き込まれている状態です。
ダウンロードするのにファイルの文字コードとか関係あるのでしょうか。
因みに、使用している文字コードはUTF-8でCSVファイルに書き込む時もUTF-8です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript htmlとcssで分数を表示後、分数の右側に文書を書きたい 1 2022/04/28 10:09
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- HTML・CSS 分数が正常に表示されない。 6 2022/05/09 18:53
- HTML・CSS アコーディオンメニューが思うように動作しません。 1 2023/08/20 16:48
- HTML・CSS CSS のみのタブ切り替えについて 1 2023/01/11 16:47
- Visual Basic(VBA) Selenium.ChromeDriverの使い方について 7 2022/09/22 06:43
- PHP style.cssのjQuery条件付きcssが機能しない 4 2022/07/17 18:27
- JavaScript clear機能を失わずにファイルアップロード機能を作成したい 3 2023/06/10 16:12
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- HTML・CSS テキストを画面の真ん中に配置したいです。 2 2022/11/25 16:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPで複数ファイルのダウン...
-
CSVファイルをダウンロードで文...
-
phpでzipファイルダウンロード...
-
phpでうまく画像がダウンロード...
-
csvダウンロードについて
-
CFileDialogの最初のディレクト...
-
VB6にてメールを送信する方法
-
onedrive にexcelファイルをア...
-
phpのheader("Location:#pos")...
-
バイナリファイルをブラウザに...
-
OpenGLで描いて画像ファイル出力
-
フォントの色を変えるには?
-
VB.NET 最下位のディレクトリ名...
-
リンク先を隠す方法はないでし...
-
PHPのif文でその処理を途中で抜...
-
FORMタグを使わずに、POSTする...
-
youtubeに音声のみのmp4ファイ...
-
mysql複数レコードをまとめて削...
-
受け取ったパラメータを次のphp...
-
phpの階層が変わると上手く読み...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
zip圧縮の種類について
-
PHPで複数ファイルのダウン...
-
phpでzipファイルダウンロード...
-
eclipseでコメントアウトができ...
-
PHPでCSVファイルの任意の行だ...
-
PHP 検索結果のCSVダウンロード
-
PDF ダウンロード
-
PHPでファイルのダウンロードす...
-
ファイル一覧を表示しその画面...
-
libxml2のインストール
-
PHPでファイルをダウンロードさ...
-
CSV出力時の”0”表示(電話番号...
-
ブラウザでExcelをダウンロード...
-
【PHP】ダウンロードサイト作成...
-
wgetの使い方
-
PHPでGoogle TTSからMP3ダウン...
-
PHPで複数ファイルをZIPで圧縮...
-
DelphiのURLDownloadToFile関数...
-
VB.NETのFTPダウンロードについて
-
ExcelとPHPについて・・・
おすすめ情報