将图像从 url 直接上传到数据库 blob 字段
Posted
技术标签:
【中文标题】将图像从 url 直接上传到数据库 blob 字段【英文标题】:Uploading image from url directly to database blob field 【发布时间】:2012-11-21 22:07:22 【问题描述】:我正在尝试将图像直接从 url 上传到数据库 blob 字段。
我设法做到这一点的唯一方法是将图像保存在我的网络服务器文件夹中并读取文件并返回内容。
我正在寻找一种将 url 数据内容直接传输到数据库 blob 字段的方法。
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
$savefile = fopen('objectPic/temp'.$counter.'.jpg', 'w');
fwrite($savefile, $result);
fclose($savefile);
$fp = fopen('objectPic/temp'.$counter.'.jpg', 'r');
$data = fread($fp, filesize('objectPic/temp'.$counter.'.jpg'));
$data = addslashes($data);
fclose($fp);
return $data;
好的 这是功能:
function GetImageFromUrl($link)
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_URL, $link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
curl_close($ch);
return $result;
这是代码:
$pic1 = GetImageFromUrl($pic1);
数据库插入
插入帖子值('','2','2','$objTypeId','','0','','1','','','','', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' , '', '', '', '', '', '', '', '', '$pic1', '$pic2', '$pic3')");
tnx 很多
【问题讨论】:
无需将$result
保存到文件中并再次读取。只需将$result
直接保存到您的 blob 字段中...
发布您用于将内容存储到 BLOB 中的代码部分。
我在询问您将图像数据存储到 DB 中的 BLOB 代码。 不您如何从 URL 检索图像数据,因为这已发布在问题中......并且不要将代码示例发布到评论中 - 编辑您的问题并将代码填写到您的问题中。谢谢!
【参考方案1】:
试试这个
$file = fopen("http://url/img.jpg", "rb");
$output = fread($file, 10000);
fclose($file);
// insert sql code here
mysql_query(" INSERT INTO table SET image='$output'");
【讨论】:
我认为它走对了,但我收到了这个错误:/images/shiran/מ×'ו×_המתמיד_16_003.jpg ) [function.fopen]:打开流失败:HTTP 请求失败! HTTP/1.1 400 Bad Request in.... 我想我需要告诉 fopen 使用一些 unicode 或类似的东西 @user1874773 请阅读本文以解决该错误***.com/questions/3334359/…以上是关于将图像从 url 直接上传到数据库 blob 字段的主要内容,如果未能解决你的问题,请参考以下文章
使用签名的 url 将文件从 angularjs 直接上传到 amazon s3
如何使用 Rails API 中的 Attachinary 将图像从 React Native App 直接上传到 Cloudinary
从 Url 将 .vhd 作为 Page-Blob 上传到 azure-blob-storage
如何使用 Node.js 将 base64 编码图像(字符串)直接上传到 Google Cloud Storage 存储桶?