将图像从RestKit上传到RoR后端时为406

时间:2013-05-13 08:34:16

标签: ruby-on-rails paperclip restkit restkit-0.20

我遇到了一个严重的问题,在没有找到解决方案的情况下搜索了很多个小时。

我有一个使用Ruby of Rails和paperclip的后端服务器来保存图像。

图片上传在浏览器中正常工作,POST到/ pictures

但是当我尝试使用RestKit(iOS)的多部分请求将其上传到/pictures.json时,我得到了406。

当在服务器端创建图像(图片对象)时,奖励(奖励对象)与其相关联。这个奖励对象是我期待的JSON响应。

这是Objective-C代码:

NSMutableURLRequest* uploadRequest = [self.objectManager multipartFormRequestWithObject:nil method:RKRequestMethodPOST 
path:@"/pictures.json" 
parameters:nil 
constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
        [formData 
         appendPartWithFileData:UIImagePNGRepresentation(socialReward.image)
         name:@"picture[pict]" 
         fileName:imageName 
         mimeType:@"image/png"];
 }];

这是控制器:

@picture = Picture.create( params[:picture] )

respond_to do |format|
    format.html {
        redirect_to @picture.reward
    }
    format.js {
        render :json => @picture.reward.to_json(:include => :picture)
    }
end

禁用CSRF检查。

使用Wireshark比较来自浏览器和iOS的请求时,它们非常相似。

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

问题出在RoR上,respond_to你应该使用format.json,而不是format.js