-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtopic-post459.html
220 lines (201 loc) · 16.4 KB
/
topic-post459.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja" dir="ltr">
<head>
<title>日本PHPユーザ会 掲示板: PHP 5 » 任意のファイルをダウロードするスクリプト</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta name="description" content="日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。" />
<meta name="keywords" content="php,web,php.gr.jp,community,usebb" />
<link rel="stylesheet" type="text/css" href="./templates/phpgrjp0.3/styles.css" />
<link rel="shortcut icon" href="./templates/phpgrjp0.3/gfx/usebb.ico" />
<link rel="alternate" type="application/rss+xml" title="日本PHPユーザ会 掲示板 RSS フィード" href="rss.xml" />
<script type="text/javascript" src="sources/javascript.js"></script>
</head>
<body onload="javascript:init_external()">
<div id="pagebox-bg">
<div id="shadow-left">
<div id="shadow-right">
<p id="logo"><a href="index.html"><img src="./templates/phpgrjp0.3/gfx/usebb.png" alt="UseBB" title="ホーム" /></a></p>
<h1 id="boardname"><span id="line">日本PHPユーザ会 掲示板</span></h1>
<h2 id="boarddescr">日本PHPユーザ会運営の掲示板です。※ただいまテスト運用中です。</h2>
<div id="topmenu"><ul>
<li><a href="index.html">ホーム</a></li><li><a href="faq.html">FAQ</a></li><li><a href="active.html">活発なトピック</a></li>
</ul></div>
<div id="topmenu-shadow"></div>
<p class="locationbar">
• <a href="index.html">日本PHPユーザ会 掲示板</a> » <a href="forum-4.html">PHP 5</a> » 任意のファイルをダウロードするスクリプト
</p>
<h3 id="forumname"><a href="topic-170.html">任意のファイルをダウロードするスクリプト</a></h3>
<p id="forummods"></p>
<p id="toolbartop"> </p>
<p id="pagelinkstop">ページ: 1</p>
<table class="maintable">
<tr>
<th>投稿者</th>
<th>投稿</th>
</tr>
<tr class="tr1">
<td class="postername">
<div class="posternamecontainer"><a href="profile-265.html">yoshiyan</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post458.html#post458" name="post458" rel="nofollow">#1</a> 2009 年 10 月 24 日(土) 20:11</div>
</td>
</tr>
<tr class="tr1">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 10 2009</div>
<div class="field">返信数: 3</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">phpで任意のファイルをダウンロードさせる<br /><br />HTML側<br /><html><br /><head><br /><title></title><br /><meta http-equiv="content-type" content="text/html; charset=UTF-8"><br /></head><br /><body> <br /><a href="download/down.php?mode=moon.wav">moon.wav</a><br /></body><br /></html><br /><br /><br /><br />down.php側<br /><?php<br />$path_file = $_GET["mode"];<br />function download_file($path_file)<br />{<br /><br /> /* ダウンロード用のHTTPヘッダ送信 */<br /> header("Content-Disposition: inline; filename=\"".basename($path_file)."\"");<br /> header("Content-Length: ".$content_length);<br /> header("Content-Type: application/octet-stream");<br /><br /> /* ファイルを読んで出力 */<br /> if (!readfile($path_file)) {<br /> die("Cannot read the file(".$path_file.")");<br /> }<br />}<br />?><br /><br />ダウンロードダイアログも現れない。<br />プログレスバーも表示なし。<br />ダウンロードダイアログを開いてくれません。<br /><br />ここでハマッテいます。<br />何方か、ご指導お願いします。</div>
</td>
</tr>
<tr class="tr2">
<td class="postername">
<div class="posternamecontainer"><a href="profile-245.html">joy</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post459.html#post459" name="post459" rel="nofollow">#2</a> 2009 年 10 月 24 日(土) 23:39</div>
</td>
</tr>
<tr class="tr2">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 8 2009</div>
<div class="field">返信数: 5</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">yoshiyanさん、<br />最もシンプルな、html、php、指定ファイルが、全て、同一階層におかれた例です。<br />HTML側:download.html<br /><pre class="code"><br /><html><br /><head><br /><meta http-equiv="content-type" content="text/html; charset=UTF-8"><br /><title>指定ファイルをダウンロード</title><br /></head><br /><body><br />ファイル名を指定ください<br /><form method="POST" action="download.php"><br /> <input type="text" name="name" size="15"/><br/><br /> <input type="submit" value="DownLoad"/><br /></form><br /></body><br /></html><br /></pre><br />PHP側:download.php<br /><pre class="code"><br /><?php<br />$fileName=$_POST['name'];<br />if(file_exists($fileName)){//指定ファイルが存在するかどうかをチェックし、trueなら、以下を処理するが、<br /> $fileSize = filesize($fileName);<br /> $mime = 'application/octet-stream'; // MIMEタイプが何にでも対応できるよう <br /> header('Content-Type: "' . $mime . '"');<br /> header('Content-Disposition: attachment; filename="' . $fileName . '"');<br /> header('Content-Transfer-Encoding: binary');<br /> header('Expires: 0');<br /> if(strstr($_SERVER['HTTP_USER_AGENT'], 'MSIE')) {//ブラウザーが、MSIEならば、<br /> header('Cache-Control: must-revalidate, post-check=0, pre-check=0');//キャッシュ化無効<br /> header('Pragma: public');<br /> } else {//その他のブラザーなら、<br /> header('Pragma: no-cache');<br /> }<br /> header('Content-Length: ' . $fileSize);<br /> readfile($fileName);<br />}else{//falseなら、メッセージを表示<br /> print ('指定ファイルは、存在しません。');<br />}</pre><br />でどうでしょうか?<div class="editinfo">« 最終編集者 <a href="profile-245.html">joy</a> 日時 2009 年 10 月 24 日(土) 23:58. »</div></div>
</td>
</tr>
<tr class="tr1">
<td class="postername">
<div class="posternamecontainer"><a href="profile-265.html">yoshiyan</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post460.html#post460" name="post460" rel="nofollow">#3</a> 2009 年 10 月 25 日(日) 8:42</div>
</td>
</tr>
<tr class="tr1">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 10 2009</div>
<div class="field">返信数: 3</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">駄目ででした。<br />Warning: Cannot modify header information - headers already sent by (output started at G:\home\homedoc\htdocs\down\down.php:2) in G:\home\homedoc\htdocs\down\down.php on line 10<br /><br />Warning: Cannot modify header information - headers already sent by (output started at G:\home\homedoc\htdocs\down\down.php:2) in G:\home\homedoc\htdocs\down\down.php on line 11<br /><br />Warning: Cannot modify header information - headers already sent by (output started at G:\home\homedoc\htdocs\down\down.php:2) in G:\home\homedoc\htdocs\down\down.php on line 12<br /><br />Warning: Cannot modify header information - headers already sent by (output started at G:\home\homedoc\htdocs\down\down.php:2) in G:\home\homedoc\htdocs\down\down.php on line 13<br /><br />Warning: Cannot modify header information - headers already sent by (output started at G:\home\homedoc\htdocs\down\down.php:2) in G:\home\homedoc\htdocs\down\down.php on line 15<br /><br />Warning: Cannot modify header information - headers already sent by (output started at G:\home\homedoc\htdocs\down\down.php:2) in G:\home\homedoc\htdocs\down\down.php on line 16<br /><br />Warning: Cannot modify header information - headers already sent by (output started at G:\home\homedoc\htdocs\down\down.php:2) in G:\home\homedoc\htdocs\down\down.php on line 20<br />RIFF?XWAVEfmt <br /><br />エラー番号からするとheaderのエラーのようです。<br /><br /><br />1ウンロードダイアログも現れません。<br />2.プログレスバーが動きません。<br />3.ブラウザがダウンロードダイアログを開いてくれません。<br />4.ファイルも落とせないです。<br /><br />ターゲットブラウザは、IE8です。<br /><br /><a href="download.php?mode=moon.wav">moon.csvをダウンロードする</a><br /><br />//sample.php<br /><?php<br /> $file = S_GET["mode"];<br /> $file_length = filesize($file);<br /> header("Content-Disposition: attachment; filename=$file");<br /> header("Content-Length:$file_length");<br /> header("Content-Type: application/octet-stream");<br /> readfile ($file);<br />?><br /><br />こなのを考えてみました。<br />駄目ででした。<br />エラーは、出ないもののheaderが動作しません。<br />1ウンロードダイアログも現れません。<br />2.プログレスバーが動きます。<br />3.ブラウザがダウンロードダイアログを開いてくれません。<br />おまけに、ファイルの中身を表示してします・・・・????<br /><br />まったく進展なしです。<div class="editinfo">« 最終編集者 <a href="profile-2.html" class="administrator">ELF</a> 日時 2009 年 10 月 26 日(月) 10:35. »</div></div>
</td>
</tr>
<tr class="tr2">
<td class="postername">
<div class="posternamecontainer"><a href="profile-245.html">joy</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post461.html#post461" name="post461" rel="nofollow">#4</a> 2009 年 10 月 25 日(日) 18:17</div>
</td>
</tr>
<tr class="tr2">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 8 2009</div>
<div class="field">返信数: 5</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">yoshiyanさん、<br />そうですか?<br />以下、@pagesのサーバーにアップしましたが、downloadできますが・・・<br /><a href="http://www16.atpages.jp/joyko/answers/download/download.html" title="http://www16.atpages.jp/joyko/answers/download/download.html" rel="external">ダウンロードのhtmlページです</a><br /><br />まずは、ご自分の手を加える前に、私のscript(上のように、一応、動いているので)そのもので、試してみて、それから、ご自分のおやりになりたいように、されたらいかがでしょうか?</div>
</td>
</tr>
<tr class="tr1">
<td class="postername">
<div class="posternamecontainer"><a href="profile-265.html">yoshiyan</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post462.html#post462" name="post462" rel="nofollow">#5</a> 2009 年 10 月 25 日(日) 19:13</div>
</td>
</tr>
<tr class="tr1">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 10 2009</div>
<div class="field">返信数: 3</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">今、HPの方を拝見しました。<br />ちゃんと、動作しています。<br />確認、しました。<br /><br />このHPっていつ迄公開していますか??<br />可能ならば、暫く公開していて欲しいのですが、可能でしょうか。??<br /><br />質問なんですが、この公開されているSeverは、何でしょうか。??<br />私の環境は、Vine Linux Sever5.0を使用しています。<br />Unicodeの違いは、関係ないでしょうか。<br />私の方は、Unicode UTF-8 改行コードがLFです。<br />コードがUNIXです。<br /><br />もしかしてUnicode UTF-8N 改行コードがCRLFで動作しているのでは、ないでしょうか??<br />若しくは、Unicode UTF-8N 改行コードCRだと思うのですが・・・・<br />違ってたらごめんなさいです。<br /><br />改行コードの違いかも、Unicode UTF-8N 改行コードがCRLF<br />なら私の書いた最初のProgramでも動作します。<br /><span style="color:red"><strong>Unicode UTF-8 改行コードがLF</strong></span><br />最初に書き込みすべき事でした。<br />これが、原因でハマっています。<div class="editinfo">« 最終編集者 <a href="profile-265.html">yoshiyan</a> 日時 2009 年 10 月 25 日(日) 20:24. »</div></div>
</td>
</tr>
<tr class="tr2">
<td class="postername">
<div class="posternamecontainer"><a href="profile-245.html">joy</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post463.html#post463" name="post463" rel="nofollow">#6</a> 2009 年 10 月 26 日(月) 10:49</div>
</td>
</tr>
<tr class="tr2">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 8 2009</div>
<div class="field">返信数: 5</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">yoshiyanさん、<br /><br /><blockquote class="quote"><div class="title">引用</div><div class="content">このHPっていつ迄公開していますか??</div></blockquote><br />→answers/に入れてますので、削除予定は、ありません。<br /><blockquote class="quote"><div class="title">引用</div><div class="content">この公開されているSeverは、何でしょうか。??</div></blockquote><br />→このサーバーは、どなたでも、登録すれば、すぐに、使えるようになる無償サーバーです。<br />(フリーメールアドでも、OKです)サーバーの中身については、@pagesの管理者へ、問い合わせてください。 <img src="./templates/phpgrjp0.3/smilies/wink.gif" alt=";)" /></div>
</td>
</tr>
<tr class="tr1">
<td class="postername">
<div class="posternamecontainer"><a href="profile-291.html">yasu1988</a></div>
</td>
<td class="postinfo">
<div class="postlinks"></div>
<div class="postdate"><a href="topic-post493.html#post493" name="post493" rel="nofollow">#7</a> 2010 年 1 月 9 日(土) 9:42</div>
</td>
</tr>
<tr class="tr1">
<td class="posterinfo">
会員
<div class="avatar"></div>
<div class="field">登録者: 1 2010</div>
<div class="field">返信数: 7</div>
<div class="field"></div>
</td>
<td class="postcontent">
<div class="post">down.php側の末尾に<br />download_file($path_file);<br />を入れてはどうでしょうか。<br />これではただ関数を定義しているだけのようですが。<br /><br />> /* ファイルを読んで出力 */<br />> if (!readfile($path_file)) {<br />> die("Cannot read the file(".$path_file.")");<br />> }<br />> }<br />download_file($path_file);// ←この行を追加<br />> ?></div>
</td>
</tr>
</table>
<p id="toolbarbottom"> </p>
<p id="pagelinksbottom">ページ: 1</p>
<div id="bottomfix"></div>
<p id="actionlinks"></p>
<p class="locationbar">
• <a href="index.html">日本PHPユーザ会 掲示板</a> » <a href="forum-4.html">PHP 5</a> » 任意のファイルをダウロードするスクリプト
</p>
<p id="linkbar">
</p>
<p id="bottom">
日本PHPユーザ会 掲示板 は <a href="http://www.usebb.net">UseBB 1 フォーラムソフトウェア</a> を使用しています
</p>
<div id="bottom-shadow"></div>
</div>
</div>
</div>
</body>
</html>