前言
1.在iOS開發(fā)的工作我們經(jīng)常使用的圖片上傳這個(gè)功能,前面我們提到了使用NSURLSessionUploadTask+NSURLSesionDelegate去實(shí)現(xiàn)圖片的上傳功能就乓,
感覺那個(gè)拼接的文件的路徑太麻煩了,現(xiàn)在感覺使用AFNetworking封裝好的
上傳圖片的功能挺好的F俊!
1.圖片上傳的代碼:
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain", @"multipart/form-data", @"application/json", @"text/html", @"image/jpeg", @"image/png", @"application/octet-stream", @"text/json", nil];
[manager POST:@"nurl" parameters:@"paramter" constructingBodyWithBlock:^(id<AFMultipartFormData> _Nonnull formData) {
// formData: 專門用于拼接需要上傳的數(shù)據(jù),在此位置生成一個(gè)要上傳的數(shù)據(jù)體
//這里可以用作多個(gè)圖片上傳加一個(gè)數(shù)組就Ok
// 在網(wǎng)絡(luò)開發(fā)中暇番,上傳文件時(shí)嗤放,是文件不允許被覆蓋,文件重名
// 要解決此問題壁酬,
// 可以在上傳時(shí)使用當(dāng)前的系統(tǒng)事件作為文件名
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
formatter.dateFormat = @"yyyyMMddHHmmss";
NSString *str = [formatter stringFromDate:[NSDate date]];
NSString *fileName = [NSString stringWithFormat:@"%@.jpg",str];
UIImage *phone = [[UIImage alloc]init];
//壓縮下
NSData *imageData =UIImageJPEGRepresentation(phone, 0.5);
/*
*該方法的參數(shù)
1. appendPartWithFileData:要上傳的照片[二進(jìn)制流]
2. name:對(duì)應(yīng)網(wǎng)站上[upload.php中]處理文件的字段(比如upload)
3. fileName:要保存在服務(wù)器上的文件名
4. mimeType:上傳的文件的類型
*/
[formData appendPartWithFileData:imageData name:@"upload" fileName:fileName mimeType:@"image/jpeg"];
} progress:^(NSProgress * _Nonnull uploadProgress) {
NSLog(@"上傳的進(jìn)度了");
} success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) {
NSLog(@"success");
} failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {
NSLog(@"failure");
}];