2013-04-25 65 views
-3

我在DB的MySQL像BLOB類型的問題上傳圖片我要去包括腳本db和形式和PHP上傳文件的代碼上傳照片到MySQL如何通過PHP5

SQL腳本

CREATE TABLE IF NOT EXISTS `images` ( `id` int(11) NOT NULL AUTO_INCREMENT, `data` longblob NOT NULL, `descripcion` varchar(240) COLLATE utf8mb4_spanish2_ci NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_spanish2_ci AUTO_INCREMENT=1 ; 

/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */; /*!40101 SET [email protected]_CHARACTER_SET_RESULTS */; /*!40101 SET [email protected]_COLLATION_CONNECTION */; 

的index.html(上傳形式)

<html> 
    <head> 

    </head> 

    <body> 
     <form method="post" action="insertar.php" enctype="multipart/form-data"> 
     <label>elige imagen:</label> 
     <br/> 
     <input type="file" name="imagen"/> 
     <br/> 
     <label>descripcion:</label> 
     <br/> 
     <textarea cols="20" rows="10" name="texto"></textarea> 
     <br/> 
     <input type="submit" value="enviar"/> 
     </form> 
    </body> 
</html> 

insertar.php(上傳代碼)

<?php 
    include "conexion.php"; 


    $archivo=$_FILES['imagen']['name']; 
    $texto=$_POST['texto']; 
    $id=rand(1,200); 

    $insertar=mysql_query("INSERT INTO image VALUES('".$id."','".$archivo."','".$texto."')"); 

    if($insertar){ 
     echo "<a href='verImagenes.php'> ver mis imagenes</a>"; 
    }else{ 
     echo "fallo la insercion"; 
    } 
?> 

,這是錯誤消息:

通知:Array對字符串的轉換在C:\ XAMPP \ htdocs中\上線ejemplo \ insertar.php 9

+0

'$ _FILES ['imagen']'是一個包含上傳文件信息的值數組。請參閱:http://stackoverflow.com/a/5445223/1745573 – Jon 2013-04-25 01:42:41

回答

1

爲什麼你試圖將* $ _ FILES *數組存儲在數據庫中? * $ _ FILES *是一個數組,用於存儲您剛上傳的文件的相關信息,因此是數組到字符串的錯誤。

當您上傳文件時,該文件暫時存儲在服務器上。您需要正確處理文件上傳 - 即將其保存在某處,然後將此路徑存儲在數據庫中。

你總是可以序列化* $ _ FILES *數組並存儲它,但我不知道這是什麼使用它會考慮它只引用臨時存在於服務器上的文件。

+0

我不需要存儲我需要的路徑存儲像blob的照片本身 – 2013-04-25 01:51:32

+0

您可以隨時打開$ _FILES ['imagen'] ['tmp_name'](臨時一旦上傳文件的位置)與類似fopen()的東西,並將內容存儲在SQL中,儘管這種情況與文件上傳應該如何處理有關...... – 2013-04-25 01:57:08