2

データベースからcsvファイルを作成するために、以前にphp出力バッファリングを使用しました。既存のファイルを作成したくなかったので、コンテンツをダウンロード可能にしたかっただけです。

CSV はテキストベースのファイルなので、この方法で簡単に作成できます。ヘッダーを設定し、テキスト コンテンツをフラッシュします。しかし!16 進データから exe を作成したい場合はどうすればよいですか? (プロジェクトは次のとおりです:既存のexeファイルがあり、ユーザーがHTMLテキストボックス内に何かを書き込めるようにしたいので、それを16進数に変換して古いテキストを新しいテキストに交換します)

ありがとう。

4

2 に答える 2

3

次のコードを使用して、ハードディスクから読み取って exe ファイルをダウンロードします。

<?php
$file = 'test.exe';

if (file_exists($file)) {
    header('Content-Description: File Transfer');
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename='.basename($file));
    header('Content-Transfer-Encoding: binary');
    header('Expires: 0');
    header('Cache-Control: must-revalidate');
    header('Pragma: public');
    header('Content-Length: ' . filesize($file));
    ob_clean();
    flush();
    readfile($file);
    exit;
}
于 2012-12-01T15:43:01.283 に答える
1

バイナリ ファイルの一部、たとえば 100 バイト目から 200 バイト目までを置き換えたい場合は、substr() と str_pad() を使用できます。

$binFile = file_get_contents('/pathto/exec/file.exec');
$replacedBinFile = substr($binFile, 0, 100) . str_pad(substr($_POST['text'], 0, 100), 100, "\x00") . substr($binFile, 200);
file_put_contents('/pathto/exec/file_replaced.exec', $replacedBinFile);
于 2012-12-01T15:56:19.057 に答える