Eya*_*yal 6 iphone multipartform-data objective-c ios afnetworking
我正在开发一个消息传递应用程序,用户也可以相互发送图片.
当用户发送多张图片时,我会并行发送它们(我发送第二张图片之前,我不等待第一张图片完成上传)
在移动到AFNetworking
I 之前,我成功完成了这项工作ASIFormDataRequest
,实际上,如果我发送了2张图像,它们都会并行传输并成功传送给其他用户.
当我尝试使用AFNetworking进行此操作时,我会遇到一些奇怪的行为.
我将尝试描述user1发送两个图像的情况user2:
这是我发送图像的方式
- (void)sendImageMsgWithPath:(NSString *)path
image:(UIImage *)image
success:(void (^)(AFHTTPRequestOperation *operation, id responseObject))success
failure:(void (^)(AFHTTPRequestOperation *operation, NSError *error))failure
progress:(void (^)(NSInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite))progress
{
NSData *imageData = UIImageJPEGRepresentation(image, 0.5);
// create the request
NSURLRequest *request = [[AppClient sharedClient] multipartFormRequestWithMethod:@"POST" path:path parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData)
{
[formData appendPartWithFileData:imageData name:@"image_name" fileName:@"image_name.jpg" mimeType:@"image/jpeg"];
}];
// create the operation
AFHTTPRequestOperation *operation = [[[AFHTTPRequestOperation alloc] initWithRequest:request] autorelease];
// set progress block
[operation setUploadProgressBlock:progress];
//set completion blocks
[operation setCompletionBlockWithSuccess:success failure:failure];
// set it to work in background
[operation setShouldExecuteAsBackgroundTaskWithExpirationHandler:nil];
// add it to the operations queue
[[AppClient sharedClient] enqueueHTTPRequestOperation:operation];
}
Run Code Online (Sandbox Code Playgroud)
***两个图片上传的路径是相同的:
path = @"FrontEnd?cmd = sendimage&fromuserid = 3&touserid = 1&"
它将被添加到baseURL以创建完整的URL:
@" http://somename.myftp.org:8080/web_proj/FrontEnd?cmd=sendimage&fromuserid=3&touserid=1 "
这是我发送的图像:
image1
图像2
图像损坏
使用 multipartFormRequest 来使用以下方法:
- (NSMutableURLRequest *)multipartFormRequestWithMethod:(NSString *)method
path:(NSString *)path
parameters:(NSDictionary *)parameters
constructingBodyWithBlock:(void (^)(id <AFMultipartFormDataProxy>formData))block;
Run Code Online (Sandbox Code Playgroud)
例如这样:
NSURLRequest* request = [[YourHTTPClient sharedHTTPClient] multipartFormRequestWithMethod:@"POST"
path:path
parameters:dict
constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:data1
name:@"image1"
fileName:@"image1.jpg"
mimeType:@"image/jpeg"];
[formData appendPartWithFileData:data2
name:@"image2"
fileName:@"image2.jpg"
mimeType:@"image/jpeg"];
}
}];
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2317 次 |
最近记录: |