在我的手机上,我正在用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“params”的字符串是否有任何限制?
如果是,那么限制是什么?
也许是我的PHP服务器配置无法处理long 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调试控制台视图中的问题:
获取数据:image / png; base64,/ 9j / 4AAQSkZJRgABAgAAAQABAADFQWERTYUIOPHGJTIYKHMBFHTYF ... kZJRgABAgAAAQABAAD // gAEKgD / 4gIcSUNDX1BST0ZJTEUAAQEAAAIMbGNtcwIQFFFFFFFFFFF net :: ERR_INVALID_URL
有人知道我为什么会这样做吗?
由于
答案 0 :(得分:0)
为什么不尝试Cordova File Transfer Plugin将图像文件上传到服务器,使用$ _FILE检索文件,将其转换为blob对象并存储。
答案 1 :(得分:0)
我发现为什么会收到这个错误!我使用的base64图像只是随机字符,这会导致问题。