2013-03-28 31 views
0

我需要存儲預先加載到MySQL數據庫中的BLOB文件中的圖像。如何使用PHP在mySQL中的表單中存儲預加載的圖像

這裏是表單代碼:

<form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>"> 
    <table width="100%" border="0" cellspacing="0" cellpadding="0"> 
    <tr> 
     <td>Image Name</td> 
     <td><input type="text" name="imgName" id="imgName" /></td> 
    </tr> 
    <tr> 
     <td>Image</td> 
     <td><input type="image" name="myImg" id="myImg" src="images/1209894_11404408.jpg" /></td> 
    </tr> 
    <tr> 
     <td>&nbsp;</td> 
     <td>&nbsp;</td> 
    </tr> 
    <tr> 
     <td colspan="2" align="center" valign="middle"><input type="submit" name="Submit" id="Submit" value="Submit" /></td> 
    </tr> 
    </table> 
    <input type="hidden" name="MM_insert" value="form1" /> 
</form> 

這裏是表結構create語句。我使用的是InnoDB:

CREATE TABLE IF NOT EXISTS `img` (
    `img_id` int(11) NOT NULL AUTO_INCREMENT, 
    `img_name` varchar(200) DEFAULT NULL, 
    `img_img` longblob, 
    PRIMARY KEY (`img_id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

的Inser查詢,我現在用的就是:

INSERT INTO img (img_name, img_img) VALUES ('$_POST['imgName']', '$_POST['myImg']') 

TIA

瑜珈楊

回答

1

首先你需要設置你的HTML表單爲了支持文件上傳,正確的表單標籤允許這樣做:

<form enctype="multipart/form-data" id="form1" name="form1" action="<?php echo $editFormAction; ?>" method="post"> 

而且PHP腳本來處理上傳表單將是這樣的:

if (isset($_FILES['myImg']) && $_FILES['myImg']['size'] > 0) { 
    $tmpName = $_FILES['myImg']['tmp_name']; 
    $fp = fopen($tmpName, 'r'); 
    $data = fread($fp, filesize($tmpName)); 
    $data = addslashes($data); 
    fclose($fp); 

    //Fill all the other form vars 

    $query = "INSERT INTO img "; 
    $query .= "(img_img) VALUES ('$data')"; 
    $results = mysql_query($query, $link); 
} 

當然,你首先需要打開你的MySQL連接,並完成後關閉它。

希望它有幫助。

親切的問候

+0

如果你讀了我原來的職位我已明確表示,形象是預裝在輸入控制(表格),因此不存在將圖像文件上載到服務器的問題。我知道,因爲網上有很多解決方案,顯示您在此處提出的方法。但我的要求是非常不同的。讓我重新說明我的要求。我想將加載到類型爲'image'的輸入字段中的圖像保存到文件中。所以我想將瀏覽器中顯示的圖像內容保存到服務器上的文件中。謝謝。 –

0

最後我找到了解決方案。

這是我必須用來將圖像保存到MySQL的代碼。

INSERT INTO img (img_name, img_img) VALUES ('$_POST['imgName']', base64_decode(substr('$_POST['myImg']', 22))); 

以同樣的方式,如果我們想將文件保存到服務器,我們可以使用下面的代碼PHP

$myid = fopen($filesavepath.$imgfilename,'wb'); 
$svgimg=$_REQUEST['svgimg']; 
fputs($myid, base64_decode(substr($_POST['myImg'], 22))); 
fclose($myid); 

希望這可以幫助別人。

瑜珈楊

相關問題