これは私が理解できないものです。MySQLデータベースにファイルをアップロードするためのアップロード機能をWebページに正常に構築しました。サーバーにアクセスしてphpMyAdminで開くと、すべて正常に表示されます... txt、jpg、pdfなど。
しかし、これをまとめてダウンロードした後、奇妙な問題が発生します。すべてのテキストドキュメント(および拡張子を「txt」に変更した後の他のすべてのタイプのファイル)には、ページ自体のHTMLコードが含まれています、続いてオリジナルコンテンツ!
また、POST後は、ブラウザが異なれば表示も異なります。txtファイルをダウンロードしようとすると、IEはページ自体(ダウンロードなし)のECHOに正しいデータを表示し、その直前にエラーメッセージを表示します。
警告:ヘッダーには複数のヘッダーを含めることはできません。改行が検出されました。82行目のC:\ wamp \ www \ ace\dmain.phpにあります。
82行目は'header("Content-length...'です。
FirefoxもChromeも何も表示しません。彼らは私がそれをダウンロードすることを許可します。
コードは次のとおりです。
<?php
if (isset($_POST['downloadid'])) {
$fileid = $_POST['downloadid'];
try {
$sql = "SELECT * FROM `datastore` WHERE `id` = '".$fileid."'";
$results = $pdo->query($sql);echo $sql;
while ($row = $results->fetch()) {
$filename = $row['filename'];
$mimetype = $row['mimetype'];
$filedata = $row['filedata'];
header("Content-length: strlen($filedata)");
header("Content-type: $mimetype");
header("Content-disposition: download; filename=$filename"); //disposition of download forces a download
echo $filedata;
// die();
} //of While
} //try
catch (PDOException $e) {
$error = '<br>Database ERROR fetching requested file.';
echo $error;
die();
} //catch
} //isset
?>