AFHTTPRequestOperationManager注意点

AFHTTPRequestOperationManager注意点


ActionSheet在控制器view上,因为点击拍照时,会modal出另外一个控制器,当前的控制器view就会从窗口中移除。就会报ActionSheet不在窗口上。
- ( void )touchesBegan:( NSSet *)touches withEvent:( UIEvent *)event
{
   
UIActionSheet *sheet = [[ UIActionSheet alloc ] initWithTitle : @" 图片上传 " delegate: self cancelButtonTitle : @" 取消 " destructiveButtonTitle : nil otherButtonTitles : @" 拍照 " , @" 相册 " , nil ];
    [sheet
showInView : self . view ];
}

#pragma mark - 实现 UIActionSheetDelegate 代理方法
- ( void )actionSheet:( UIActionSheet *)actionSheet clickedButtonAtIndex:( NSInteger )buttonIndex
{
   
UIImagePickerController *ipc = [[ UIImagePickerController alloc ] init ];
    ipc.
delegate = self ;
   
switch (buttonIndex) {
       
case 0 :
           
if (![ UIImagePickerController isSourceTypeAvailable : UIImagePickerControllerSourceTypeCamera ]) return ;
            ipc.
sourceType = UIImagePickerControllerSourceTypeCamera ;
           
break ;
       
case 1 :
           
if (![ UIImagePickerController isSourceTypeAvailable : UIImagePickerControllerSourceTypePhotoLibrary ]) return ;
            ipc.
sourceType = UIImagePickerControllerSourceTypePhotoLibrary ;
           
break ;
           
       
default :
           
break ;
    }
    [
self presentViewController :ipc animated : YES completion : nil ];
}
注意:
如果在switchcase中定义一个局部变量,需要用大括号括住。

- ( void )imagePickerController:( UIImagePickerController *)picker didFinishPickingMediaWithInfo:( NSDictionary *)info
{
   
// 关闭 UIImagePickerController 控制器
    [
self dismissViewControllerAnimated : YES completion : nil ];
   
NSLog ( @"%@" ,info);
   
// 获取图片
   
UIImage *image = info[ UIImagePickerControllerOriginalImage ];
   
self . imageV . image = image;
}
- ( IBAction )upLoad
{
   
// 创建一个管理者
   
AFHTTPRequestOperationManager *manger = [ AFHTTPRequestOperationManager manager ];
   
// 设置参数
   
NSMutableDictionary *params = [ NSMutableDictionary dictionary ];
    params[
@"username" ] = @"123" ;
    params[
@"pwd" ] = @"123" ;
   
   
// 设置 URL
   
NSString *url = @"http://192.168.15.56:8080/MJServer/upload" ;
    [manger
POST :url parameters :params constructingBodyWithBlock :^( id < AFMultipartFormData > formData) {
          
          注意:
          在发送请求之前会自动调用这个block
       
需要在这个block中添加文件参数到formData

       
NSData *fileData = UIImageJPEGRepresentation ( self . imageV . image , 1.0 );
        [formData
appendPartWithFileData :fileData name : @"file" fileName : @"image.png" mimeType : @"image/png" ];
    }
success :^( AFHTTPRequestOperation *operation, id responseObject) {
       
NSLog ( @" 上传成功 " );
    }
failure :^( AFHTTPRequestOperation *operation, NSError *error) {
       
NSLog ( @" 上传失败 " );
    }];
}


注意:
1.保留照片的质量
NSData  *fileData =  UIImageJPEGRepresentation ( self . imageV . image 1.0 );

2.AFN不能监听文件的上传进度,ASI可以监听文件的上传进度。

3.需要上传的文件的具体数据
FileData : 需要上传的文件的具体数据
name :
服务器那边接收文件用的参数名
fileName :
(告诉服务器)所上传文件的文件名
mimeType :
所上传文件的文件类型

NSData *fileData = UIImageJPEGRepresentation ( self . imageV . image , 1.0 );
[formData
appendPartWithFileData :fileData name : @"file" fileName : @"image.png" mimeType : @"image/png" ];

4.需要上传的文件的URL路径
FileURL : 需要上传的文件的URL路径
name :
服务器那边接收文件用的参数名
fileName :
(告诉服务器)所上传文件的文件名
mimeType :
所上传文件的文件类型

NSURL *url = [[ NSBundle mainBundle ] URLForResource : @"itcast" withExtension : @"txt" ];
[formData
appendPartWithFileURL :url name : @"file" fileName : @"test.txt" mimeType : @"text/plain" error : nil ];
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值