看到简书某大神的上传方法,记录一下,以防忘记
NSMutableDictionary *params = [NSMutableDictionary dictionary]; params[@"sensitive"]=false;
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.requestSerializer.timeoutInterval = 20; manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/plain", @"multipart/form-data", @"application/json", @"text/html", @"image/jpeg", @"image/png", @"image/jpg", @"application/octet-stream", @"text/json", nil];
// 在parameters里存放照片以外的对象 [managerPOST:@"http://atell.awei.org/images/upload/binary" parameters:params constructingBodyWithBlock:^(id _Nonnull formData) {
// formData: 专门用于拼接需要上传的数据,在此位置生成一个要上传的数据体
// 这里的photoArray是存放图片的数组
for(int i =0; i < self.photoArray.count; i++)
{ UIImage*image =self.photoArray[i];
NSData*imageData =UIImageJPEGRepresentation(image,0.5);
// 在网络开发中,上传文件时,是文件不允许被覆盖,文件重名
// 要解决此问题,
// 可以在上传时使用当前的系统时间作为文件名
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
// 设置时间格式
[formattersetDateFormat:@"yyyyMMddHHmmss"];
NSString*dateString = [formatterstringFromDate:[NSDatedate]];
NSString*fileName = [NSString stringWithFormat:@"%@-%d.jpg", dateString,i];
DLog(@"-----7777-----\n%@",fileName );
/*
*该方法的参数
1. appendPartWithFileData:要上传的照片[二进制流]
2. name:对应网站上处理文件的字段-----此字段非常重要,不然会上传失败,应与后台约定好
3. fileName:要保存在服务器上的文件名-----一般无所谓
4. mimeType:上传的文件的类型*/
[formDataappendPartWithFileData:imageDataname:[NSStringstringWithFormat:@"file"]fileName:fileNamemimeType:@"image/jpg"];
}
}progress:^(NSProgress*_NonnulluploadProgress) {
DLog(@"---上传进度--- %@",uploadProgress);
}success:^(NSURLSessionDataTask*_Nonnulltask,id _NullableresponseObject) {
DLog(@"```上传成功111111-----");
}failure:^(NSURLSessionDataTask*_Nullabletask,NSError*_Nonnullerror) {
DLog(@"xxx上传失败xxx %@", error);
}];
网友评论