问题描述
我试图以二进制格式将映像写入sql Server数据库,但没有成功。从前端(AngularJS)上传到服务器(PHP)的图像是Base64
字符串,然后我需要将其转换为以0x
开头的原始二进制文件,因为数据库需要{{1 }}数据类型。
我尝试的所有操作似乎都将值括在单引号中,因此尝试将其解析为varchar并导致错误:
一般错误:20018不允许从数据类型varchar(max)隐式转换为varbinary(max)。
我当前的代码段:
varBinary(max)
似乎总是用单引号引起,我不知道该如何解决:
$img = (binary) '0x'.strtoupper(bin2hex($photo['PhotoImage']));
更新
经过一番游戏后,我找到了问题所在,我只是不知道如何解决。
此声明:
PhotoImage='0x6956424F5277304B47676F414141414E53556845556741414156414141414651434141414141444D67336B464'
(对我来说)应该向我返回一个二进制值,实际上仍在返回字符串,因此为什么我的S-PROC失败了:
$img = (binary)('0x' . bin2hex($photo['PhotoImage']));
dd(gettype($img));
此外,作为一个小测试,似乎PHP无法声明一个真正的二进制文件:
...
"<span class=sf-dump-str title="6 characters">string</span>"
</pre><script>Sfdump("sf-dump-1548954697")</script>
...
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)