標籤:ica option 響應 nsfile pre upload 效果 遍曆 manager
//filePath 是要上傳到伺服器圖片的路徑,如果是圖片,你可以image對象建立一個,來擷取路徑,比如已知一個UIImage對象image:CGSize size=image.size;NSData *DATA=[self imageWithImage:image scaledToSize:sise];UIImage *image1=[UIImage imageWithData:DATA]; //圖片儲存的路徑 NSString * DocumentsPath = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"]; NSFileManager *fileManager = [NSFileManager defaultManager]; [fileManager createDirectoryAtPath:DocumentsPath withIntermediateDirectories:YES attributes:nil error:nil]; [fileManager createFileAtPath:[DocumentsPath stringByAppendingString:@"/image.png"] contents:DATA attributes:nil]; NSString *filePath = [[NSString alloc]initWithFormat:@"%@%@",DocumentsPath, @"/image.png"]; [self upload:filePath image:image1]; 把方法中的yourURL 改成你自己的就可以用了,因為AFNetWorking 是非同步 所以我將後面分享功能的方法寫在success裡面的 - (void)upload:(NSString*)filePath image:(UIImage*)img{ //表單請求,上傳檔案 AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; manager.requestSerializer = [AFJSONRequestSerializer serializer];//請求 manager.responseSerializer = [AFHTTPResponseSerializer serializer];//響應 manager.requestSerializer.timeoutInterval = 20; [manager.responseSerializer setAcceptableContentTypes:[NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript",@"textml",@"text/css",@"text/plain", @"application/javascript",@"application/json", @"application/x-www-form-urlencoded", nil]]; /* *這裡需要特別注意一下,因為沒有放具體的上傳地址,所以這個上傳方式是不成功的,但是方法是沒錯的,需要替換成正確的上傳地址 */ NSDictionary *param=[NSDictionary dictionaryWithObjectsAndKeys:@"picture",@"paramName",filePath,@"file",nil]; [manager POST:@"yourURL" parameters:param constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) { //將圖片以表單形式上傳 NSData *data1=[NSData dataWithContentsOfFile:filePath]; NSData *imgData=UIImagePNGRepresentation(img);
[formData appendPartWithFileData:imgData name:@"picture" fileName:filePath mimeType:@"image/png"]; } progress:^(NSProgress *uploadProgress){ //進度 NSLog(@"進度%@",uploadProgress); } success:^(NSURLSessionDataTask *task, id responseObject) { NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingMutableContainers error:nil]; NSArray *keys= [dic allKeys]; //遍曆keys for(int i=0;i<[keys count];i++) { NSString *key=keys[i]; if([key isEqualToString:@"Data"]) { NSString *url=[dic objectForKey:key]; url=[NSString stringWithFormat:@"http://123.207.238.220:81%@",url]; NSLog(@"%@",url); [self share:url]; } }
} failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"%@",[error description]); NSLog(@"%@",error); //因為沒有有效地址,所以肯定是上傳失敗的,為了表現出效果,此處也替換為新頭像 }]; }
iOS--AFNetWorking 上傳圖片到伺服器