Je suis confronté à ce problème depuis plus d'une semaine !
Je n'arrive pas à envoyer les images de mon iphone vers un serveur rails avec la gem carrierwave configurée. Je n'ai pas de problème pour envoyer des images depuis mon iphone vers un serveur rails backend avec la gemme carrierwave configurée.
Voici mon contrôleur de photos :
class PhotosController < ApplicationController
def new
@photo = Photo.new(:user_id => params[:user_id])
end
def create
@photo = current_user.photos.build(params[:photo])
if @photo.save
respond_to do |format|
format.html { flash[:notice] = "Successfully created photo."
redirect_to @photo.user
}
format.json {
render :json => {:action => 'create', :owner => current_user}
}
end
else
render :action => 'new'
end
end
et voici le code objective-c :
UIImage *image = [UIImage imageNamed:@"moon.png"];
NSData *imageData = UIImagePNGRepresentation(image);
NSString *urlString=[NSString stringWithFormat:@"http://127.0.0.1:3000/photos.json"];
// setting up the URL to post to
// setting up the request object now
NSMutableURLRequest *request = [[[NSMutableURLRequest alloc] init] autorelease];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"POST"];
NSString *boundary = [NSString stringWithString:@"---------------------------14737809831466499882746641449"];
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"];
NSMutableData *body = [NSMutableData data];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Disposition: form-data; name=\"userfile\"; filename=\"ipodfile.jpg\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[[NSString stringWithString:@"Content-Type: application/octet-stream\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[NSData dataWithData:imageData]];
[body appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
// setting the body of the post to the reqeust
[request setHTTPBody:body];
// now lets make the connection to the web
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *returnString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(returnString);
la réponse que j'obtiens du serveur est la suivante :
"EOFError (bad content body)"
le code objective-c a été testé avec un serveur php et le téléchargement a réussi ! Je pense donc que mon problème est lié à ma configuration rails/carrierwave. Aidez-moi à faire sortir ces satanées images de mon iPhone et à les transférer sur mon serveur rails.
votre aide est très appréciée.