Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将图像作为base64字符串从Tianium应用程序发布到RubyonRails web服务_Javascript_Ruby On Rails_Image Processing_Titanium_Base64 - Fatal编程技术网

Javascript 将图像作为base64字符串从Tianium应用程序发布到RubyonRails web服务

Javascript 将图像作为base64字符串从Tianium应用程序发布到RubyonRails web服务,javascript,ruby-on-rails,image-processing,titanium,base64,Javascript,Ruby On Rails,Image Processing,Titanium,Base64,我在将已转换为base64字符串的应用程序中的图像发布到ruby on rails服务器时遇到问题 这个应用程序是用钛合金编写的。 检索图像刺并将其转换回没有图像的图像。 执行转换并发送的应用程序函数如下所示 函数后活动(){ }); 当数据到达服务器时,使用以下代码将其与其他数据表一起直接插入POST: @user=user.find(会话[:user\u id]) @post=@user.posts.create(params[:post].merge(:val1=>@val1,:va

我在将已转换为base64字符串的应用程序中的图像发布到ruby on rails服务器时遇到问题

这个应用程序是用钛合金编写的。 检索图像刺并将其转换回没有图像的图像。 执行转换并发送的应用程序函数如下所示

函数后活动(){

});

当数据到达服务器时,使用以下代码将其与其他数据表一起直接插入POST:

@user=user.find(会话[:user\u id])
@post=@user.posts.create(params[:post].merge(:val1=>@val1,:val2=>@val2,:group_id=>@groupId)。permit(:val3,:val4,:time,:val5,:val5,:group_id,:comment,:image64

要查看从应用发送的内容,将图像作为base64字符串保存到文件中。这是一个摘录
/9j/4aaqskzjrgabaqaaqabaad/2wbdacgchimesgjismtkygwpgrbpdc3phyxulkkyczlo+ajiqgtobdokrayqmyp/L2u71///m8H///6/+b9///2wbdasstlttw1phzbqxb4pyyl+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj

post[image64]值到达并保存在数据库中,如下所示:
/9j/4AAQSKZJRGABAAQAAAQABAD/2WBDACGHIMEGJISMTKYGWPGRBPDC3PYKYCZLO AJIQGTOBDOKKRARYQMYP/L2u71///m8H///6/b9///2WBDASSTLTW1PZBQXB4PJ4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4 Pj4

请注意,发送的字符串包含Pj4+Pj4+,服务器端的字符串变成Pj4-Pj4。+字符已被删除。我猜是这一点,可能是对字符串的其他更改导致了问题

以前是否有人见过这种情况?我如何确保发送到服务器和保存在数据库中的字符串是相同的。我没有改变


谢谢

这似乎是一种在请求中发送文件的非常脆弱且容易出错的方式:也许您应该改用enctype='multipart/form data'表单?这将为您节省大量字符串格式方面的麻烦

您的问题是Rails会对任何参数值自动调用
CGI.unescape(val)
:这会将+符号“unescape”到空格中,因为在url中,空格通常被编码为“+”符号

多部分编码可能会阻止它这样做-试试看

//hide keyboard on submit
Ti.UI.Android.hideSoftKeyboard();

var imgFile = Ti.Filesystem.getFile(img);
var imgString = imgFile.read();

var mybase = Ti.Utils.base64encode(imgString);

sendData('POST', 'create_post.json', true, jsonToForm({
    "post[text1]" : $.txt1.value,
    "post[number1]" : $.number1.value,
    "post[time]" : (60 * parseInt($.txtHrs.value)) + parseInt($.txtMins.value),
    "post[comment]" : $.txtComments.value,
    "post[image64]" : mybase.toString()
}), function(response) {
    alert('Activity Added.');

    Ti.App.fireEvent('getFeed');
    Ti.App.fireEvent('showFeed');

    Ti.API.info('Response: ' + response.message);

}, function(error) {
    alert('There was an error. Please try again later.');
});