1

我正在尝试将简单的文件从 php 上传到 mysql 并将其下载回来,但我似乎一直遇到问题,但我无法弄清楚。我尝试以这种形式上传的图片在 blob 列中创建了一些内容,但在下载时寡妇查看器给出了没有可用预览的错误

这是表单的代码

<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,

并且您在内容中添加了斜线......所以现在您需要删除它们。

于 2013-02-04T11:52:22.310 回答