本文目錄一覽:
- 1、php如何實現,遠程傳一張照片回來,在數據庫進行比對識別,有相同的就取出相關信息
- 2、怎樣用php實現上傳圖片到數據庫
- 3、php通過api接口上傳遠程圖片,圖片不完整。
- 4、php怎麼把遠程圖片通過api接口傳到另外一個站點上?
- 5、用php的imagecreatefrompng創建圖像,怎麼直接上傳到遠程服務器
- 6、php如何上傳圖片到遠程服務器
php如何實現,遠程傳一張照片回來,在數據庫進行比對識別,有相同的就取出相關信息
數據庫,你可能保存有圖片的文件名,大小,格式化,來本地文件路徑,
把傳過來的圖片的這三個特徵在數據庫查找一下,如果存在,就幾乎可以判斷是同一個文件,
如果你要更準確一些,就用file_get_contents()把文件內容讀出來進行對比。
怎樣用php實現上傳圖片到數據庫
php實現上傳圖片保存到數據庫的方法。具體分析如下:
php 上傳圖片,一般都使用move_uploaded_file方法保存在服務器上。但如果一個網站有多台服務器,就需要把圖片發佈到所有的服務器上才能正常使用(使用圖片服務器的除外)
如果把圖片數據保存到數據庫中,多台服務器間可以實現文件共享,節省空間。
首先圖片文件是二進制數據,所以需要把二進制數據保存在mysql數據庫。
mysql數據庫提供了BLOB類型用於存儲大量數據,BLOB是一個二進制對象,能容納不同大小的數據。
BLOB類型有以下四種,除存儲的最大信息量不同外,其他都是一樣的。可根據需要使用不同的類型。
TinyBlob 最大 255B
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G
數據表photo,用於保存圖片數據,結構如下:
CREATE TABLE `photo` (
`id` int(10) unsigned NOT NULL auto_increment,
`type` varchar(100) NOT NULL,
`binarydata` mediumblob NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
upload_image_todb.php代碼如下:
?php
// 連接數據庫
$conn=@mysql_connect(“localhost”,”root”,””) or die(mysql_error());
@mysql_select_db(‘demo’,$conn) or die(mysql_error()); // 判斷action
$action = isset($_REQUEST[‘action’])? $_REQUEST[‘action’] : ”;
// 上傳圖片
if($action==’add’){
$image = mysql_escape_string(file_get_contents($_FILES[‘photo’][‘tmp_name’]));
$type = $_FILES[‘photo’][‘type’];
$sqlstr = “insert into photo(type,binarydata) values(‘”.$type.”‘,'”.$image.”‘)”;
@mysql_query($sqlstr) or die(mysql_error());
header(‘location:upload_image_todb.php’);
exit();
// 顯示圖片
}elseif($action==’show’){
$id = isset($_GET[‘id’])? intval($_GET[‘id’]) : 0;
$sqlstr = “select * from photo where id=$id”;
$query = mysql_query($sqlstr) or die(mysql_error());
$thread = mysql_fetch_assoc($query);
if($thread){
header(‘content-type:’.$thread[‘type’]);
echo $thread[‘binarydata’];
exit();
}
}else{
// 顯示圖片列表及上傳表單
?
!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN” “”
html
head
meta http-equiv=”content-type” content=”text/html; charset=utf-8″
title upload image to db demo /title
/head
body
form name=”form1″ method=”post” action=”upload_image_todb.php” enctype=”multipart/form-data”
p圖片:input type=”file” name=”photo”/p
pinput type=”hidden” name=”action” value=”add”input type=”submit” name=”b1″ value=”提交”/p
/form
?php
$sqlstr = “select * from photo order by id desc”;
$query = mysql_query($sqlstr) or die(mysql_error());
$result = array();
while($thread=mysql_fetch_assoc($query)){
$result[] = $thread;
}
foreach($result as $val){
echo ‘pimg
src=”upload_image_todb.php?action=showid=’.$val[‘id’].’t=’.time().'”
width=”150″/p’;
}
?
/body
/html
?php
}
?
程序運行截圖和數據庫截圖:
php通過api接口上傳遠程圖片,圖片不完整。
sybase_connect連上數據庫。
語法: int sybase_connect(string [servername], string [username], string [password]);
返回值: 整數函數種類: 數據庫功能 本函數用來打開與 Sybase 數據庫的連接。
參數 servername 為欲連上的數據庫服務器名稱。
參數 username 及 password 可省略,分別為連接使用的帳號及密碼。
使用本函數需注意早點關閉數據庫,以減少系統的負擔。
連接成功則返回數據庫的連接代號,失敗返回 false 值。
php怎麼把遠程圖片通過api接口傳到另外一個站點上?
本地傳圖片到服務器叫上傳,服務器從別的網站獲取圖片,這叫下載,這比上傳還簡單
$content = file_get_contents(圖片地址);
file_put_contents(保存的路徑文件名, $content);
用php的imagecreatefrompng創建圖像,怎麼直接上傳到遠程服務器
使用imagepng函數把圖像輸出到瀏覽器或者文件中。
bool imagepng ( resource $image [, string $filename [, int $quality [, int $filters ]]] )
Outputs or saves a PNG image from the given image.
用輸出緩衝ob_start等函數截獲imagepng對瀏覽器的輸出,保存在變量中,作為位元組數據發送到其他服務器即能實現上傳。
php如何上傳圖片到遠程服務器
可以使用curl這個擴展來實現。
PHP 支持的由Daniel Stenberg創建的libcurl庫允許你與各種的服務器使用各種類型的協議進行連接和通訊。
libcurl支持http、https、ftp、gopher、telnet、dict、file和ldap協議。libcurl同時也支持HTTPS認證、HTTP POST、HTTP PUT、 FTP 上傳(這個也能通過PHP的FTP擴展完成)、HTTP 基於表單的上傳、代理、cookies和用戶名+密碼的認證。
curl_close() 關閉一個cURL會話。
curl_copy_handle()複製一個cURL句柄和它的所有選項。
curl_errno()返回最後一次的錯誤號。
curl_error()返回一個保護當前會話最近一次錯誤的字符串。
curl_escape()返迴轉義字符串,對給定的字符串進行URL編碼。
curl_exec()執行一個cURL會話。
curl_file_create()創建一個CURLFile對象。
curl_getinfo()獲取一個cURL連接資源句柄的信息。
curl_init()初始化一個cURL會話。
curl_multi_add_handle()向curl批處理會話中添加單獨的curl句柄。
curl_multi_close()關閉一組cURL句柄。
curl_multi_exec()運行當前cURL句柄的子連接
curl_multi_getcontent()如果設置了CURLOPT_RETURNTRANSFER,則返回獲取的輸出的文本流。
curl_multi_info_read()獲取當前解析的cURL的相關傳輸信息。
curl_multi_init()返回一個新cURL批處理句柄。
curl_multi_remove_handle()移除curl批處理句柄資源中的某個句柄資源。
curl_multi_select()等待所有cURL批處理中的活動連接。
curl_multi_setopt()設置一個批處理cURL傳輸選項。
curl_multi_strerror()返回描述錯誤碼的字符串文本。
curl_pause()暫停及恢復連接。
curl_reset()重置libcurl的會話句柄的所有選項。
curl_setopt_array()為cURL傳輸會話批量設置選項。
curl_setopt()設置一個cURL傳輸選項。
curl_share_close()關閉cURL共享句柄。
curl_share_init()初始化cURL共享句柄。
curl_share_setopt()設置一個共享句柄的cURL傳輸選項。
curl_strerror()返回錯誤代碼的字符串描述。
curl_unescape()解碼URL編碼後的字符串。
curl_version()獲取cURL版本信息。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/200583.html