从img标签的src上传图像到php

9
我想问一下是否有方法可以从<img>标签的src中上传图片。 img标签的src不是来自服务器,看起来像这样:
<img src="data:image/png;base64,iVBOR...52Eysdsadsa===" />

这是我从这个网站学到的方法得出的产品:这里。谢谢您提前的支持。
如果您需要更深入的解释,请告诉我。谢谢。

您需要使用输入文件来上传任何类型的数据。 - user2663434
你可以通过post方式将src数据发送到服务器,并将其写入文件中。这不需要表单,只需要使用javascript和服务器上的接收路由。 - Bernhard
1个回答

9

您可以将base64编码的字符串(src部分)上传到服务器并原样保存,或将其转换为图像并保存为文件。

上传base64编码的图片:

获取图像的src属性并将其发送到服务器。

var base64image = $('#blah').attr('src');

将base64编码的字符串转换为图片

$img = $_POST['base64image'];
$img = str_replace('data:image/png;base64,', '', $img);
$img = str_replace(' ', '+', $img);
$data = base64_decode($img);
$file = 'image.png';
$success = file_put_contents($file, $data);

或者将上传的内容保存到你的数据库,然后使用以下代码在你的页面上呈现图片:

echo '<img src="'. $img .'" />';

我尝试了你的解决方案,但生成的文件无法被Paint读取。它显示“该文件不是有效的位图文件,或其格式目前不受支持。”我的HTML和JS看起来像这样https://jsfiddle.net/dr6vuofn/ - dapidmini
你能发布一下你的base64编码数据的前半部分吗? - Sunil Manheri
不行。我通过ajax调用这段代码,当我尝试返回$data时,代码会调用错误回调并返回空的responseText。我尝试只返回$data的一部分,使用substr但仍然是同样的问题。 - dapidmini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接