1

php から mysql への単純なファイルのアップロードを作成してダウンロードし直そうとしていますが、問題が発生しているように見えますが、それを理解できません。このフォームでアップロードしようとした画像は、ブロブ列にいくつかのコンテンツを作成しますが、ダウンロード時に未亡人のビューアが表示され、プレビューが利用できないというエラーが表示されます

フォームのコードはこちら

<form enctype="multipart/form-data" method="post" action="upload.php">
Choose your file <input name="file" type="file">
<input type="submit" >
</form>

これがupload.phpのコードです

include('connect.php');
$actualname=$_FILES['file']['name'];
$type=$_FILES['file']['type'];
$name  = $_FILES['file']['tmp_name'];
$size = $_FILES['file']['size'];

$fresource=fopen($name,'r');
$content=fread($fresource,filesize($name));;
$content=addslashes($content);
fclose($fresource);

$query='INSERT INTO `files` (Name,Content,Type,Size) VALUES ("'.$actualname.'","'.$content.'","'.$type.'","'.$size.'")';
echo $query;
$var=mysql_query($query,$con);

これがdownload.phpのコードです

include('connect.php');
$query='SELECT * FROM `files` WHERE ID="2"';
$res=mysql_query($query,$con);
$var=mysql_fetch_array($res);
header("Content-length: ".$var[4]);
header("Content-type: ".$var[3]);
header("Content-Disposition: attachment; filename=".$var[1]);
echo $var[1];

どんな助けでも大歓迎です

ファイルテーブルには、ID、名前、コンテンツ、タイプ、サイズの列が同じ順序で含まれています

4

1 に答える 1

1

MYSQL_* を使用しないでください

また、addslashes() は、コードを保護するための恐ろしく誤りやすい方法です。このままでは、コードは SQL インジェクションの影響を受けやすくなります。

私はあなたのデータベースが

id name content type size

最後の行を次のように変更します

echo stripslashes($var[2]);

以来

0 => id,
1 => name,
2 => content,

コンテンツにスラッシュを追加したので、em を削除する必要があります。

于 2013-02-04T11:52:22.310 に答える