загрузка изображения в MySQL с помощью PHP - PullRequest
0 голосов
/ 20 марта 2012

Я новичок в php и пытаюсь загрузить файл изображения в базу данных mysql с помощью php. Я пробовал различные уроки, но у меня это не сработало. Фрагмент кода: -

<?php 
//connect to database. Username and password need to be changed 
mysql_connect("localhost", "root", ""); 

//Select database, database_name needs to be changed 
mysql_select_db("yelldb"); 

if (!$_POST['uploaded']){ 
//If nothing has been uploaded display the form 
?> 

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"  
ENCTYPE="multipart/form-data"> 
Upload:<br><br> 
<input type="file" name="image"><br><br> 
<input type="hidden" name="uploaded" value="1"> 
<input type="submit" value="Upload"> 
</form> 

<?php 
}else{ 
//if the form hasn't been submitted then: 

//from here onwards, we are copying the file to the directory you made earlier, so it can then be moved  
//into the database. The image is named after the persons IP address until it gets moved into the database 

//get users IP 
$ip=$_SERVER['REMOTE_ADDR']; 


//don't continue if an image hasn't been uploaded 
if (!empty($image)){ 
//copy the image to directory 

copy($image, "./temporary/".$ip.""); 

//open the copied image, ready to encode into text to go into the database 
$filename1 = "./temporary/".$_SERVER['REMOTE_ADDR']; 
$fp1 = fopen($filename1, "r"); 

//record the image contents into a variable 
$contents1 = fread($fp1, filesize($filename1)); 

//close the file 
fclose($fp1); 

//encode the image into text 
$encoded = chunk_split(base64_encode($contents1));  

//insert information into the database 
mysql_query("INSERT INTO servicelist (ImgData)"."VALUES ('$encoded')"); 

//delete the temporary file we made 
//unlink($filename1); 
}
}
?>

Ответы [ 2 ]

0 голосов
/ 20 марта 2012

Как правило, вы не сохраните все изображение в базе данных SQL.Вместо этого вы сохраняете на диске путь или какой-то другой «указатель» на фактический файл.

Измените код так, чтобы он выглядел примерно так:

//don't continue if an image hasn't been uploaded 
if (isset($_POST['image'])){ 
 $image = $_POST['image'];
 //copy the image to directory 
 $path = "/some/path";

 move_uploaded_file($image,$path);

 //store the name and path. PS: you will want to validate your input, and look 
 //at using prepared statements. 
 //Concentating values like this is NOT safe, or ideal

 $location = $path . "/" . $image
 mysql_query("INSERT INTO servicelist (ImgData) VALUES (" . $location . ")"); 
}

Если, тем не менее, вы все еще хотите сохранить изображение в базе данных SQL, посмотрите тип хранилища BLOB-объектов, а не кодированный текст..

PHP move_uploaded_file

0 голосов
/ 20 марта 2012

Обычно мы не сохраняем все изображение в нашей базе данных. Мы вводим перманент изображения в нашу базу данных. Используйте эту функцию PHP

move_uploaded_file(file,newloc) 

Это переместится из вашего временного каталога в постоянный каталог. Затем получите путь оттуда и вставьте его в базу данных.

...