AFNetworking 上傳文件
@第一種
#pragma mark - AFNetworking上傳文件- (void)didClickUploadButtonAction{ NSString *fileName = @"hmt"; // 確定需要上傳的文件(假設選擇本地的文件) NSURL *filePath = [[NSBundle mainBundle] URLForResource:fileName withExtension:@"png"]; NSDictionary *parameters = @{@"name":@"額外的請求參數"}; AFHTTPRequestOperationManager *requestManager = [AFHTTPRequestOperationManager manager]; [requestManager POST:@"http://192.168.10.18:8080/AFNetworkingServer/upload" parameters:parameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { /** * appendPartWithFileURL // 指定上傳的文件 * name // 指定在服務器中獲取對應文件或文本時的key * fileName // 指定上傳文件的原始文件名 * mimeType // 指定商家文件的MIME類型 */ [formData appendPartWithFileURL:filePath name:@"file" fileName:[NSString stringWithFormat:@"%@.png",fileName] mimeType:@"image/png" error:nil]; } success:^(AFHTTPRequestOperation *operation, id responseObject) { [[[UIAlertView alloc] initWithTitle:@"上傳結果" message:[[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding] delegate:self cancelButtonTitle:@"" otherButtonTitles:nil] show]; } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"獲取服務器響應出錯"); }]; } </pre>
@第二種:NSData *imageData = UIImagePNGRepresentation(image);//轉碼成UTF-8 否則可能會出現錯誤 NSString *URLTmp = [NSString stringWithFormat:@"%@%@",CGBaseURL,path]; NSString *URLTmps = [URLTmp stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; URLTmp = URLTmps; NSMutableURLRequest *request = [[AFHTTPRequestSerializer serializer] multipartFormRequestWithMethod:@"POST" URLString:URLTmp parameters:body constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { [formData appendPartWithFileData:imageData name:@"headerImg" fileName:@"123.png" mimeType:@"image/png"]; } error:nil]; AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]]; NSProgress *progress = nil; manager.responseSerializer = [AFHTTPResponseSerializer serializer]; NSURLSessionUploadTask *uploadTask = [manager uploadTaskWithStreamedRequest:request progress:&progress completionHandler:^(NSURLResponse *response, id responseObject, NSError *error) { if (error) { NSLog(@"Error: %@", error); } else { block(responseObject); } }]; [uploadTask resume]; </pre>
本文由用戶 end5 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!