相信很多人在实现图片上传的功能, 是否觉得很烦躁呢, 其实昨晚之后回头去看会发现,其实图片上传并不是太难 ,只不过有时候需要前后端一起配合
下面就说一下实现的方法
(1) af 3.0 之前
NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSData *data = (根据您的图片文件转换成data);
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
NSString *str = @"application/json";
[manager.requestSerializer setValue:str forHTTPHeaderField:@"Content-Type"];
NSMutableURLRequest *request = [manager.requestSerializer multipartFormRequestWithMethod:@"POST" URLString:(你的URL) parameters:dic constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:data name:"后台处理的字段" fileName:(文件名) mimeType:@"image/jpg"];
} error:nil];
AFHTTPRequestOperation *operation = [manager HTTPRequestOperationWithRequest:(request) success:^ (AFHTTPRequestOperation * opseration, id responseObject) {
} failure:^(AFHTTPRequestOperation * operation, NSError * error) {
}];
[manager.operationQueue addOperation:operation];
[operation setUploadProgressBlock:^(NSUInteger bytesWritten, long long totalBytesWritten, long long totalBytesExpectedToWrite) {
}];
(2)3.0 之后
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager POST:uploadpath parameters:dic constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData :data name : "后台处理的字段" fileName :(文件名) mimeType : @"image/jpg" ];} success:^(NSURLSessionDataTask *task, id responseObject) {
} failure:^(NSURLSessionDataTask *task, NSError *error) {
}];
(3)多图上传就是把多张图片的data全部加到一张表单里,传给服务器就可以了