将base64图像上传到php服务器并保存到MySql

时间:2015-01-14 12:22:25

标签: php mysql angularjs ionic

在我的手机上,我正在用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

有人知道我为什么会这样做吗?

由于

2 个答案:

答案 0 :(得分:0)

为什么不尝试Cordova File Transfer Plugin将图像文件上传到服务器,使用$ _FILE检索文件,将其转换为blob对象并存储。

答案 1 :(得分:0)

我发现为什么会收到这个错误!我使用的base64图像只是随机字符,这会导致问题。