如何使用$ .ajax将Base64编码的图像发布到服务器?

时间:2015-07-10 09:26:27

标签: javascript php jquery ajax cordova

我正在制作一个手机应用程序,用户从相机中提交照片,我以Base64编码形式获取。

.form-wrapper h1 + form > label:first-child {
  /* some stuff */
}

服务器端将代码保存到数据库中,但选中后用作div后台;无论如何它都行不通!

var posData=extImage1;
            $.ajax({
                type: 'POST',
                data: posData,
                timeout:50000,
                url: 'http://192.168.137.1/bee/services/add_photo.php',
                success: function(data){
                        alert(data);
                        addToList();
                },
                error: function(){
                    alert('Please check your internet connection');
                }
            });

为什么会这样?我的猜测是,在发布数据时,它会以某种方式加扰。

我尝试使用此question中的代码将图像保存在服务器上,但它只是提供了损坏的图像。

更新

使用此decoder我提交了已发布的64位代码,并且还提供了损坏的图像。我认为这意味着我的post方法有问题。有什么建议?

1 个答案:

答案 0 :(得分:0)

如果使用Dropzone.js

,这将更加简洁

查看 Dropzone.js Implementation 。这很容易

这是你可以实例化的方法

var myDropzone = new Dropzone("div#myId", { url: "/file/post"});

您还可以收听很多活动,例如Adding a fileRemoving a file

对于Ex:

Dropzone.options.myAwesomeDropzone = {
  init: function() {
    this.on("addedfile", function(file) { alert("Added file."); });
  }
};

编辑:如果您将image存储在磁盘中,而只存储数据库中的image location,则上述解决方案将起作用。事实上,如果你这样做会更好。

现在谈谈您处理图片的方法,您可以通过此链接how-can-i-store-and-retrieve-images-from-a-mysql-database-using-php进行直接回答

另外,检查您正在使用的datatype,可能是它截断了您存储在数据库中的编码数据,因此您可能会收到损坏的图像。另请参阅上述将图像存储在链接中提到的数据库中的方法。

希望这能解决您的问题