MySQL データベースにアップロードしているファイルをオンラインでダウンロードできないようです。ほとんどの場合、プレーン テキストのあいまいな兆候しか得られません。ローカルホストでは、ダウンロードは問題ありません。データベースをオンラインでチェックし、ローカルで両方ともアップロード テーブルに適切にアップロードされています。まず、Upload.php をお見せします (実際にはそう呼ばれていません。また、これもスクリプト全体ではありません。これは大きなスクリプトです)。
if (isset($_POST['verstuur'])) {
$id = NULL;
if($_FILES['userfile']['size'] > 0)
{
$fileName = $_FILES['userfile']['name'];
$tmpName = $_FILES['userfile']['tmp_name'];
$fileSize = $_FILES['userfile']['size'];
$fileType = $_FILES['userfile']['type'];
$fp = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);
if(!get_magic_quotes_gpc())
{
$fileName = addslashes($fileName);
}
$query = "INSERT INTO upload (name, size, type, content ) ".
"VALUES ('$fileName', '$fileSize', '$fileType', '$content')";
mysql_query($query) or die('Fout, query mislukt');
$query = "SELECT LAST_INSERT_ID() ID";
$result = mysql_query($query);
while($row = mysql_fetch_array($result)){
$id = $row['ID'];
}
}
さて、ダウンロード リンクを作成する別のスクリプトがあります。
$query = "SELECT U_ID, name FROM upload WHERE U_ID = '$opvraag[U_ID]'";
$result = mysql_query($query) or die('Error, query failed');
if(mysql_num_rows($result) == 0)
{
echo "<td>Geen Bijlage</td>";
}
else
{
while(list($id, $name) = mysql_fetch_array($result))
{
echo '<td><a href="download.php?id='.$opvraag['U_ID'].'">'.$name.'</a></td>';
}
}
そして最後にdownload.phpがあります
if(isset($_GET['id']))
{
$id = $_GET['id'];
$query = "SELECT name, type, size, content " .
"FROM upload WHERE U_ID = '$id'";
$result = mysql_query($query) or die('Fout, query mislukt');
list($name, $type, $size, $content) = mysql_fetch_array($result);
header("Content-length: $size");
header("Content-type: $type");
header("Content-Disposition: attachment; filename=$name");
echo stripslashes($content);
exit;
}
データベーステーブル:
名前: タイプ:
U_ID int(8) AUTO_INCREMENT
name varchar(255)
size int(8)
type text
content blob