我在PHP中有一个图像的base64字符串,例如:
$imgStr = 'data:image/png;base64,E0LdjA==';
我有一个包含2个字段id(varchar)
和img(blob)
的MySQL表。我有一个插入这些值的存储过程,并且来自PHP。
我使用base64_decode($imgStr)
将图像转换为blob,程序执行但数据库中blob的值为空。
这是我执行的PHP函数:
function test($id,$img){
if (connect()){
global $conn;
$query = $conn->prepare("CALL prctest(?,?,@rtn)");
$blob = base64_decode($img);
$query->bind_param('sb',$id,$blob);
$query->execute();
$result = $conn->query("SELECT @rtn as rtn");
$row = $result->fetch_assoc();
echo $row['rtn'];
$result->free();
close();
}
else{
echo "connection error!";
}
}
我无法弄清楚错误!
答案 0 :(得分:0)
您的图片字符串无效base64。您需要从头开始删除“data:image / png; base64”,以便能够对其进行解码。
答案 1 :(得分:0)
我使用此代码(摘要):
<script>
var dataFile = {
nome: file.name,
size: file.size,
type: file.type,
};
var reader = new FileReader();
reader.onload = function (evt) {
dataFile.data = evt.target.result;
myAngularService.saveFile(dataFile)
.then(function (success) {
if (success.status == 'ok')
{
...
}
}, function (error) {
...
});
};
reader.readAsDataURL(file);
</script>
,它在php
public function save(dataFile) {
$pos = strpos($dataFile->data, 'base64,');
$blobData= base64_decode(substr($dataFile->data, $pos + 7));
....
$sql = "INSERT INTO myTable (nameFile, BLOBFile)";
$sql.= " VALUES(:name, :blobData)";
$stmt = $this->pdo->prepare($sql);
$stmt->bindParam(':name', $dataFile->name);
$stmt->bindParam(':blobData', $blobData, \PDO::PARAM_LOB);
# save
$this->pdo->beginTransaction();
$ret = $stmt->execute();
$this->pdo->commit();
...
}
答案 2 :(得分:0)
这个为我工作
js
var dataBlob = base64File.split('data:application/octet-stream;base64,')[1];
ajax
$.ajax({
url: 'YOUR_URL',
type: "POST",
dataType: "json",
data: {
data: dataBlob
},
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Headers': '*',
'Access-Control-Allow-Methods': '*'
}
}).done (function(data) {
console.log(data);
}).always (function(data) {
$("#myStatus").append("<br>" + data.message);
});
}
php
$dataFile = $_POST["data"];
$blobData = base64_decode( $dataFile );