您的位置:

php模拟远程上传图片,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版本信息。