iOS进阶_WebDav(二.WebDav上传文件)

以PUT方式上传文件至WebDav

#import "ViewController.h"
@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
}


- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event {
    NSLog(@"执行");
    [self putUpload];
}


#pragma mark - <上传演练>
-(void)putUpload{
    //1.url - URL是直接保存在服务器上的文件名
    NSURL * url = [NSURL URLWithString:@"http://192.168.31.180/uploads/123.png"];
    //2.请求
    NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:url];
    //设置请求方法-webdav上传需要使用put方法
    request.HTTPMethod = @"PUT";
    //设置身份验证的数据
    NSString * authStr = [self base64Encode:@"admin:123456"];
    authStr = [@"BASIC " stringByAppendingString:authStr];
    //设置请求头
    [request setValue:authStr forHTTPHeaderField:@"Authorization"];

    //3.session
    //上传的源文件的路径!!
    NSURL * fileUrl = [[NSBundle mainBundle] URLForResource:@"456.png" withExtension:nil];

    [[[NSURLSession sharedSession] uploadTaskWithRequest:request fromFile:fileUrl completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
        NSString * str = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

        NSLog(@"%@ %@",str,response);
        NSLog(@"%@",error);
    }] resume];
}
-(NSString *)base64Encode:(NSString *)str{
    //1.转成二进制
    NSData * data = [str dataUsingEncoding:NSUTF8StringEncoding];
    //2.base64编码
    return [data base64EncodedStringWithOptions:0];
}
@end

注意:在做request请求前,需要把之前设置的用户名和密码以特定格式进行base64编码,并设置

WebDav 的用户名密码格式

 格式:BASIC(用户名:密码)base64编码
 admin:123456

base64经常用!而且在密码学里面必须会
对一个二进制数据进行编码 会是源文件的 4/3 的大小 会大1/3 左右!!
从iOS 7.0开始.苹果提供了base64 的编码和解码的支持!!
如果是老项目,可能会看到base64的三方框架

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值