利用AFN上传文件

1.利用pods下载AFN

platform :ios, ‘8.0'

target ‘上传文件’ do
pod 'AFNetworking'

end

2

 NSString*urlstr=[NSString stringWithFormat:@""];

    NSLog(@"%@",urlstr);

    //AFN3.0+基于封住HTPPSession的句柄

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];

    //    NSDictionary *dict = @{@"username":@"Saup"};

    //formData: 专门用于拼接需要上传的数据,在此位置生成一个要上传的数据体

    [manager POST:urlstr parameters:nilconstructingBodyWithBlock:^(id<AFMultipartFormData>  _Nonnull formData) {

        //        UIImage *image =[UIImage imageNamed:@"moon"];

        //        NSData *data = UIImagePNGRepresentation(image);

        NSString*path=[[NSBundle mainBundle]pathForResource:@"20170113"ofType:@"doc"];

        NSData*fileData=[[NSData allocinitWithContentsOfFile:path];

        NSLog(@"%@",fileData);

        NSString*content=[[NSString alloc]initWithData:fileData encoding:NSUTF8StringEncoding];

        NSLog(@"%@",content);

        // 在网络开发中,上传文件时,是文件不允许被覆盖,文件重名

        // 要解决此问题,

        // 可以在上传时使用当前的系统事件作为文件名

        NSDateFormatter *formatter = [[NSDateFormatter allocinit];

        // 设置时间格式

        formatter.dateFormat = @"yyyyMMddHHmmss";

        NSString *str = [formatter stringFromDate:[NSDate date]];

        NSString *fileName = [NSString stringWithFormat:@"20170113.doc"];

        //上传

        /*

         此方法参数

         1. 要上传的[二进制数据]

         2. 对应网站上[upload.php]处理文件的[字段"file"]

         3. 要保存在服务器上的[文件名]

         4. 上传文件的[mimeType]//http://tool.oschina.net/commons

         */

      //我这儿是doc文件所以mimeTypeapplication/msword   如果是txt文件则mimeTypetext/plain  具体参考网址//http://tool.oschina.net/commons来确定

        [formData appendPartWithFileData:fileData name:@"file" fileName:fileName mimeType:@"application/msword"];

    } progress:^(NSProgress * _Nonnull uploadProgress) {

        //上传进度

        // @property int64_t totalUnitCount;     需要下载文件的总大小

        // @property int64_t completedUnitCount; 当前已经下载的大小

        //

        // Progress添加监听 KVO

        NSLog(@"%f",1.0 * uploadProgress.completedUnitCount / uploadProgress.totalUnitCount);

        // 回到主队列刷新UI,用户自定义的进度条

        dispatch_async(dispatch_get_main_queue(), ^{

            NSLog(@"正在上传");

        });

    } success:^(NSURLSessionDataTask * _Nonnull task, id  _NullableresponseObject) {

        NSLog(@"上传成功 %@", responseObject);

    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {

        NSLog(@"上传失败 %@", error);

    }];


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值