簡體   English   中英

用php將文件上傳到mysql

[英]file upload in php to mysql

我試圖將一個簡單的文件從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,Name,Content,Type,Size列

不要使用MYSQL_ *

還addlashes()是保護代碼安全的一種糟糕的方法。 由於代碼本身容易受到SQL注入的影響。

我假設你的數據庫是

id name content type size

所以將最后一行更改為

echo stripslashes($var[2]);

以來

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

並在內容中添加了斜線...所以現在您需要刪除em。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM