2016-04-19 39 views
0

我想執行使用的是iOS這種捲曲要求AFNetworking 2.0:使用這個圖像將URL附加到AFNetworking 2.0請求的URL?

curl -F "[email protected]" "https://image.groupme.com/pictures?access_token=token123"

http://s3.amazonaws.com/joinlook1/ffb9900d0ea123972d2fc5319ee2f9ec2abe691e.jpg

看着iOS Image upload via AFNetworking 2.0

我想:

[self POST:[NSString stringWithFormat:@"pictures?access_token=%@", access_token] parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
    NSError *error; 
    [formData appendPartWithFileURL:[NSURL URLWithString:@"http://s3.amazonaws.com/joinlook1/ffb9900d0ea123972d2fc5319ee2f9ec2abe691e.jpg"] name:@"image" error:&error]; 
} success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject); 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Error: %@ ***** %@", operation.responseString, error); 
}]; 

但我不斷收到錯誤:{"errors":["http: no such file"]}

看着Uploading image with AFNetworking 2.0,我試過使用擴展函數,但不斷得到相同的錯誤。

[formData appendPartWithFileURL:[NSURL URLWithString:photo.urlString] name:@"image" fileName:@"photo.jpg" mimeType:@"image/jpeg" error:&error]; 

我也是第一次嘗試下載該文件,然後在這兩個其他職位所用的確切代碼上傳,但我一直得到了同樣的錯誤:

__block NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:@"http://s3.amazonaws.com/joinlook1/ffb9900d0ea123972d2fc5319ee2f9ec2abe691e.jpg"]]; 

NSDictionary *parameters = @{@"image":@"YES"}; 
[self POST:[NSString stringWithFormat:@"pictures?access_token=%@", access_token] parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { 
    [formData appendPartWithFormData:imageData name:@"image"]; 
} success:^(AFHTTPRequestOperation *operation, id responseObject) { 
    NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject); 
} failure:^(AFHTTPRequestOperation *operation, NSError *error) { 
    NSLog(@"Error: %@ ***** %@", operation.responseString, error); 
}]; 

下面是完整的錯誤消息:

***** Error Domain=com.alamofire.error.serialization.response Code=-1011 "Request failed: bad request (400)" UserInfo={com.alamofire.serialization.response.error.response=<NSHTTPURLResponse: 0x14fa92dc0> { URL: https://image.groupme.com/pictures?access_token=XXXX } { status code: 400, headers { 
"Access-Control-Allow-Credentials" = false; 
"Access-Control-Allow-Headers" = "Accept, Content-Type, X-Requested-With, X-Access-Token, User-Agent, Pragma, Referrer, Cache-Control, Origin"; 
"Access-Control-Allow-Methods" = "POST, GET, PUT, DELETE, OPTIONS"; 
"Access-Control-Allow-Origin" = "*"; 
"Access-Control-Max-Age" = 86400; 
"Cache-Control" = "must-revalidate, private, max-age=0"; 
Connection = "keep-alive"; 
"Content-Length" = 34; 
"Content-Type" = "application/json;charset=utf-8"; 
Date = "Tue, 19 Apr 2016 09:50:42 GMT"; 
Server = "nginx/1.8.1"; 
"X-Gm-Service" = "image-service"; 
} }, NSErrorFailingURLKey=https://image.groupme.com/pictures?access_token=XXXXX, com.alamofire.serialization.response.error.data=<7b226572 726f7273 223a5b22 68747470 3a206e6f 20737563 68206669 6c65225d 7d0a>, NSLocalizedDescription=Request failed: bad request (400)} 

這是相同的錯誤,如果我下載的圖像,然後將其固定,或者如果我只是用URL連接它。

如何將圖像附加到AFNetworking中的表單請求?

+0

使用'[FORMDATA appendPartWithFileData:名稱:文件名:mime類型:]',不'[formData appendPartWithFormData:name:]' – dirkgroten

回答

0

看起來像file cURL的一部分與appendPartWithFileData函數中的name參數相關。如果我將其更改爲name它的工作原理:

[formData appendPartWithFileData:imageData name:@"file" fileName:@"image.jpg" mimeType:@"image/jpeg"]; 

但似乎我必須使用該方法。如果我嘗試剛纔添加的網址,仍然失敗:

[formData appendPartWithFileURL:[NSURL URLWithString:@"..."] name:@"file" fileName:@"image.jpg" mimeType:@"image/jpeg" error:&error] 

即使我用的是真實的文件名從文件URL