将 base64 图像上传到 php 服务器并保存到 MySql
Upload base64 image to php server and save to MySql
来自我的 phone,我正在用 ngcordova 拍照并将其转换为 base64。这非常有效,可以在它之后显示在我的 phone 应用程序上。
现在,我正尝试使用来自 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 table 中创建了 2 列。一个是 LongBlob 类型,另一个是 LongText。它应该有足够的空间。 ;-)
首先,可以发送到$http的字符串有没有限制"params"?
如果可以,限制是多少?
也许是我的 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/4gIcSUNDX1BST0ZJTEUAAQEAAAIMbGNtcwIQFFFFFFFFFFF net::ERR_INVALID_URL
有人知道我为什么会这样吗?
谢谢
为什么不尝试 Cordova File Transfer Plugin 将图像文件上传到服务器,使用 $_FILE 检索文件,将其转换为 blob 对象并存储它。
我找到了出现该错误的原因!我使用的 base64 图像只是随机字符,这导致了问题。
来自我的 phone,我正在用 ngcordova 拍照并将其转换为 base64。这非常有效,可以在它之后显示在我的 phone 应用程序上。
现在,我正尝试使用来自 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 table 中创建了 2 列。一个是 LongBlob 类型,另一个是 LongText。它应该有足够的空间。 ;-)
首先,可以发送到$http的字符串有没有限制"params"?
如果可以,限制是多少?
也许是我的 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/4gIcSUNDX1BST0ZJTEUAAQEAAAIMbGNtcwIQFFFFFFFFFFF net::ERR_INVALID_URL
有人知道我为什么会这样吗?
谢谢
为什么不尝试 Cordova File Transfer Plugin 将图像文件上传到服务器,使用 $_FILE 检索文件,将其转换为 blob 对象并存储它。
我找到了出现该错误的原因!我使用的 base64 图像只是随机字符,这导致了问题。