Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在php中将blob文件检索到图像?_Php_Image_Blob - Fatal编程技术网

如何在php中将blob文件检索到图像?

如何在php中将blob文件检索到图像?,php,image,blob,Php,Image,Blob,我使用plupload在我的基于php的网站上上传文件,大文件上传文件会变成一个名为“blob”的文件,没有任何后缀。我知道这是一个包含原始数据的二进制文件,问题是如何检索数据并将其保存为图像文件,例如.png/.jpg或其他文件?我试过: $imageString = file_get_contents($blogPath); $image = imagecreatefromstring($imageString); 但它给了我一些“数据不是公认的格式…”的错误,有什么想法吗?提前感谢。如果

我使用plupload在我的基于php的网站上上传文件,大文件上传文件会变成一个名为“blob”的文件,没有任何后缀。我知道这是一个包含原始数据的二进制文件,问题是如何检索数据并将其保存为图像文件,例如.png/.jpg或其他文件?我试过:

$imageString = file_get_contents($blogPath);
$image = imagecreatefromstring($imageString);

但它给了我一些“数据不是公认的格式…”的错误,有什么想法吗?提前感谢。

如果您的
文件\u get\u contents()
工作正常,您对
imagecreatefromstring()的调用应该可以正常工作。使用
var\u dump($imageString)
进行验证。您的意思是将变量命名为
$blobPath
而不是
$blogPath

不过,您不需要加载此图像。只需重命名文件

rename($blobPath, 'new/path/here.jpg');

您不应该这样做,而是应该这样做以向浏览器显示图像

 <img src="data:image/jpeg;base64,'.base64_encode( $row['blob_image'] ).'"/>

我不确定imagecreatefromsting是做什么的,也不确定它是如何编码图像的

我查看了该功能的文档;你错过了:

$data = 'iVBORw0KGgoAAAANSUhEUgAAABwAAAASCAMAAAB/2U7WAAAABl'
       . 'BMVEUAAAD///+l2Z/dAAAASUlEQVR4XqWQUQoAIAxC2/0vXZDr'
       . 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
       . '8a5HSE35Q3eO2XP1A1wQkZSgETvDtKdQAAAABJRU5ErkJggg==';

$data = base64_decode($data); <--- this operation
$data='ivborw0kggoaaansuheugaaabwaaaascamaaab/2U7WAAAABl'
. 'BMVEUAAAD///+l2Z/daaaasureqvr4xqwquqoaaixc2/0vXZDr'
. 'EX4IJTRkb7lobNUStXsB0jIXIAMSsQnWlsV+wULF4Avk9fLq2r'
. '8a5hse35q3eo2xp1a1wqkzsgetvdtkdqaaabjru5erkjggg==';

$data=base64_解码($data) 我正在储存上传的图像文件以备后期使用,比如将它们附加到帖子或产品上(我的网站是电子商务CMS)。我想我的图像文件没有完全上传到服务器上,上传前的图像是6mb,但blob文件只有192kb,所以我最好的猜测是上传的只是一块而不是整个包,但这又提出了另一个问题:我应该如何将所有的部分组装成一个完整的图像文件?如前所述,我使用plupload for js插件和php作为后端,处理上传的后端php代码如下所示:

move_uploaded_file($_FILES["file"]["tmp_name"], $uploadFolder . $_FILES["file"]["name"]);

原始图像是什么类型的?它是jpeg图像文件否我不是要重命名变量或文件,上载到服务器的图像文件将成为名为“blob”的文件,并且此blob文件无法用任何图像查看软件打开,因为它不再是图像,而是一整束二进制数据,所以我想把这个blob文件检索回一个图像文件。var_dump会打印图像字符串的内容,尽管它都是无法识别的字符。很抱歉,我没有说得更清楚:(@dulan a图像是一堆二进制数据。磁盘上的文件名根本不重要。重要的是内容类型。如果您试图将图像发送到客户端,只需添加
头('content-type:image/jpeg'));
。我明白你的意思,我正在尝试存储该图像以供以后使用,可能会将其附加到帖子或产品上(我的网站是电子商务CMS)@杜兰:是的,那么你到底想做什么呢?一点也不清楚。你的问题最初是询问重命名一个文件,但后来你说这不是问题所在。然后你说你需要一种方法来正确地向用户显示该图像,所以我提到了如何添加该标题,但现在你在谈论如何使用该标题再看一次文件。你能更清楚更具体地说明你想做什么吗?嗯..我没有问那么多问题,只是问如何将blob检索到图像文件,但没关系,我发现问题是它是作为块上传的,没有像我在自己的回答中解释的那样在php中得到适当的处理。无论如何,谢谢你的帮助你所有的时间。不,没有迹象表明数据是base-64编码的。别介意这个新问题,我认为它是重复的,这里已经回答了: