从我的手机上,我正在用ngcordova拍照并将其转换为base64。这非常有效,可以在它之后立即显示在我的手机应用程序上。
现在,我正在尝试使用angularjs的$http将base64字符串发送到我的PHP服务器,但由于某种原因,它没有收到它。这是代码。
var request = $http({
method: "post",
url: mainUrl + "spus.php",
params: {
action: "saveLocationPicture",
locationPicture: spuInfo.locationPicture <-- "data:image/png;base64,/9j/44AQSk..."
}
});
我说php服务器没有收到它,但我认为这不是真的。为什么?因为如果我发送一个较短的字符串(少于 835 个字符),php 服务器会收到它,我可以将其保存到 MySql 数据库中。为了进行测试,我在 MySql 表中创建了 2 列。一个是LongBlob类型,另一个是LongText类型。它应该有足够的空间。;-)
首先,可以发送到$http"参数"的字符串是否有任何限制?
如果是这样,限制是多少?
也许是我的 PHP 服务器配置无法处理长 base64 字符串?你觉得怎么样?
谢谢
********更新*******
大家好
到目前为止,我找到了部分解决方案,想与您分享。
现在,我可以通过以下方式将我的大 base64 图像发送到我的 php 服务器:
var request = $http({
method: "post",
url: mainUrl + "spus.php",
data: {
action: "saveLocationPicture",
hw_id: spuInfo.hw_id,
locationPicture: spuInfo.locationPicture
}
});
而且,在我的 php 代码中:
$postdata = file_get_contents("php://input");
$request = json_decode($postdata);
$action2 = $request->action;
$hw_id2 = $request->hw_id;
$locationPicture = $request->locationPicture;
现在,我看到的唯一问题是Chrome调试控制台视图中的此问题:
GET data:image/png;base64,/9j/4AAQSkZJRgABAgAAAQABAADFQWERTYUIOPHGJTIYKHMBFHTYF...kZJRgABAgAAAQABAAD//gAEKgD/4gIcSUNDX1BST0ZJTEUAAQEAAAIMbGNtcwIQFFFFFFFFFFFF ERR_INVALID_URL
FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
有人知道我为什么会这样吗?
谢谢
你为什么不尝试 Cordova 文件传输插件将您的图像文件上传到服务器,使用 $_FILE 检索文件,将其隐藏到 blob 对象中并存储它。
我找到了为什么会出现这个错误!我使用的base64图像只是随机字符,这导致了问题。