簡體   English   中英

將圖像上傳到PHP Web服務並將其存儲在MSSQL數據庫中

[英]Upload image to php webservice and store it in MSSQL database

我正在嘗試將圖像上傳到php Web服務並將其存儲在MS SQL數據庫中。 我的帖子數據為json格式,其中包含base64編碼的圖像數據。

Base 64編碼並插入樣本

$base=base64_encode(file_get_contents("C:\sample\images.jpg"));
$CommandText = "INSERT INTO [M_IMAGES] ([IMAGE_DATA]) VALUES(?) " ;
                 $ImageStream = imagecreatefromstring(base64_decode($this->imageData));
            $RowsAffected = (int)$objDBManager->Exe*emphasized text*cuteNonQuery($CommandText,array(array($ImageStream, 
                         SQLSRV_PARAM_IN,
                         SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY),
                         SQLSRV_SQLTYPE_VARBINARY('max'))));

這里$ this-> imageData包含 base64編碼的圖像數據,而IMAGE_DATA數據類型為image。 我可以正常上傳成功上傳和檢索圖像

正常上傳

$ImagePath = $_FILES[$ImageCtrlName]['tmp_name'];
    $ImageStream = fopen($ImagePath, "r");
    $RowsAffected = (int)$objDBManager->ExecuteNonQuery($CommandText,
                        array(array(&$ImageStream,
                                 SQLSRV_PARAM_IN,
                                 SQLSRV_PHPTYPE_STREAM(SQLSRV_ENC_BINARY),
                                 SQLSRV_SQLTYPE_VARBINARY('max'))));
    fclose($ImageStream);

我收到錯誤sqlsrv_query():提供的資源不是有效的流資源有人可以指出這里有什么問題。 還是有更好的方法來做到這一點。 幫助我,因為我是PHP新手。

最好的解決方案是僅將圖像的URL保存在數據庫中,然后將圖像保存在服務器中。 當您要打印時,只需在數據庫中搜索URL。 嘗試將圖像保存在數據庫中是錯誤的解決方案。

從您的問題中我可以理解,您的問題源於試圖將圖像以二進制形式存儲在MSSQL上,這是不允許的 我能做的是建議您將圖像以base64形式存儲,該形式是一串字母數字字符。 無需嘗試將圖像存儲為圖像,因為base64編碼的圖像通常可以直接提供給客戶端。

TL; DR只需將映像存儲為base64。

暫無
暫無

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

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