2

その場で file.txt を作成してダウンロードすることは可能ですか?

ファイルはに保存する必要がありますbackup/process/_pro_links_date.txt が、ファイルをダウンロードすると、 .txt 拡張子がなく、フォルダーに保存されました。

HTML

<a href="?down=load">File</a>

PHP

if ( $_GET['down'] == 'load' ) {
$date = date( 'Y-m-d H:i:s' );

$myFile = "backup/process/_pro_links_$date.txt";
$fh = fopen($myFile, 'w') or die("can't open file");
$stringData = "Title - Url - Live Date - Process Date \r";
fwrite($fh, $stringData);
$sql = mysql_query("SELECT * FROM k_addlinks WHERE user_code = '".$_SESSION['user_code']."' ") or die (mysql_error());
while ($row = mysql_fetch_array($sql)){
$dated = date("m/j/y g:i",strtotime( $row["date"] ));
    if($row["spider_date"] == 'never'){
        $sdate = $row["spider_date"];
    }else{
        $sdate = date("m/j/y g:i",strtotime( $row["spider_date"] ));
    }
    $stringData = $row['pro_name'] . $row['customDomain'] . $dated . $sdate . '\r';
}
fwrite($fh, $stringData);
fclose($fh);

$path = "backup/process/_pro_links_$date.txt";
$name = "_pro_links_$date.txt";
header("Content-Type: text/plain");
header("Content-Length: " . filesize($path));    
header('Content-Disposition: attachment; filename='.$name);

readfile($path);
}

私のコードの何が問題になっていますか?

4

3 に答える 3

2

問題がわかりました。ヘッダーでファイル名を設定しますContent-Dispositionが、ファイル名を使用して作成したため、ファイル名にスペースが含まれていますdate("Y-m-d H:i:s")。そのため、そのヘッダーでファイル名を引用符で囲む必要があります。

// $name contains a space, in the format _pro_links_Y-m-d H:i:s.txt
$name = "_pro_links_$date.txt";
// Surround the filename with quotes...
header('Content-Disposition: attachment; filename="'.$name . '"');

$dateまたは、ファイル名で使用する前にスペースを削除します。

$date = str_replace($date, " ", "_");
$name = "_pro_links_$date.txt";
于 2012-09-09T13:47:02.987 に答える
1

ファイルに保存する代わりに、ヘッダーを送信した後にエコーします。

于 2012-09-09T13:40:36.033 に答える