2013-04-27 81 views
0

这是上传表单,使我将图像上传到数据库的图片上传到数据库

<html> 
<head> 
<title>File Uploading Form</title> 
</head> 

<body> 
<h3>File Upload:</h3> 
Select a file to upload: <br /> 

<form action="file_uploader.php" method="post" enctype="multipart/form-data"> 
<input type="file" name="file" size="50" /> 
<br /> 
<input type="submit" value="Upload File" /> 
</form> 
</body> 
</html> 

这是我有一个在一个名为file_uploader.php代码的代码。当试图完成这个我得到的错误无法复制文件!

<?php 
if($_FILES['file']['name'] != "") 
{ 
    copy($_FILES['file']['name'], "databasehostdetails") or 
      die("Could not copy file!"); 
} 
else 
{ 
    die("No file specified!"); 
} 
?> 
<html> 
<head> 
<title>Uploading Complete</title> 
</head> 

<body> 
<h2>Uploaded File Info:</h2> 
<ul> 
<li>Sent file: <?php echo $_FILES['file']['name']; ?> 
<li>File size: <?php echo $_FILES['file']['size']; ?> bytes 
<li>File type: <?php echo $_FILES['file']['type']; ?> 
</ul> 
</body> 
</html> 
+0

粘贴PHP错误日志中变得越来越快回答 – vaichidrewar 2013-04-27 19:05:01

+1

你应该应对文件到服务器,然后就在数据库的路径可能会有所帮助。 – Sumoanand 2013-04-27 19:07:14

+1

为什么不把它存储在服务器上,只是在db中存储文件名/路径? – member8888 2013-04-27 19:05:23

回答

0

您需要使用tmp_name。另外,什么是databasehostdetails?第二个参数是目标(您要将文件复制到的位置)。

copy($_FILES['file']['tmp_name'], DESTINATION_PATH); 
0

这是一个简单的方法来做到这一点。我给你我的脚本 的index.html 但要小心:

  1. 不推荐,因为它是昂贵的数据库来存储文件
  2. 修复任何SQL注入vurnelabilities。我自己不知道该怎么做。你可以进行研究并修复它。
  3. 还检查了这里Storing Images in DB - Yea or Nay?

然而代码工作,如果它不是一个大规模应用,并没有SQL注入攻击可能发生相当不错。

<html> 
<body> 
<form method="post" enctype="multipart/form-data" action="doupload.php"> 
<input type="hidden" name="MAX_FILE_SIZE" value="2000000"> 
<input name="userfile" type="file" id="userfile"> 
<input name="upload" type="submit" id="upload" value=" Upload "> 
</form> 

</body> 
</html> 

doupload.php

<?php   
include("config.php"); 

$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 set name='".$fileName."', size='".$fileSize."', type='".$fileType."', content='".$content."'";   
mysql_query($query) ;  
?>  

getuploaded.php

<?php 
// select records from database if exists to display 
include("config.php"); 
$query1 = "SELECT id, name FROM upload"; 
$result1 = mysql_query($query1) or die('Error, query failed'); 


if(mysql_num_rows($result1)>0) 
{ 
while(list($id, $name) = mysql_fetch_array($result1)) 
{ 
?> 
<a href="download.php?id=<?php echo $id;?>"><?php echo $name;?></a> <br> 

<?php 
} 
} 
?> 

的download.php

<?php 
//header("Content-type: $type"); 
include("config.php"); 
$id = $_GET['id']; 
$query = "SELECT name, type, size, content " . 
"FROM upload WHERE id = '$id'"; 

$result = mysql_query($query) or die('Error, query failed'); 
list($name, $type, $size, $content) = mysql_fetch_array($result); 

header("Content-length: $size"); 
header("Content-type: $type"); 
header("Content-Disposition: attachment; filename=$name"); 
echo $content; 

?> 

的config.php

<?php 
$dbhost = 'localhost'; 
$dbuser = 'root'; 
$dbpass = ''; 
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die('Error connecting to mysql'); 
$dbname = 'uploadfile'; 
mysql_select_db($dbname); 
?> 

Createing表

CREATE TABLE upload (
id INT NOT NULL AUTO_INCREMENT, 
name VARCHAR(30) NOT NULL, 
type VARCHAR(30) NOT NULL, 
size INT NOT NULL, 
content MEDIUMBLOB NOT NULL, 
PRIMARY KEY(id) 
);