最近看过此主题的会员

返回列表 发帖

[IOS手机程序] ios教程_OSX配WebDAV服务器联NSURLSessionUploadTask文件上传

ios教程_OSX配WebDAV服务器联NSURLSessionUploadTask文件上传






QQ截图20140814110025.jpg
2014-8-14 11:06



一. 配置WebDAV服务器1. 修改httpd.conf1> 打开终端,依次输入:
cd /etc/apache2/sudovihttpd.conf2> 在vi中输入
tpd-dav.conf查找httpd-dav.conf3> 将该行最前面的 # 注释删除4> 保存并退出输入
:wq2. 修改httpd-dav.conf1> 在终端中依次输入:
cd /etc/apache2/extrasudovihttpd-dav.conf2> 按照以下内容修改httpd-dav.conf中的内容提示:仅修改了授权类型和用户密码文件两个位置
DavLockDB"/usr[img]file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\[LC3U)F{0XCAB)LKNIT0K@G.gif[/img]ar/DavLock"Alias/uploads"/usr/uploads"<Directory"/usr/uploads">Dav On    Order Allow,Deny    Allow from all    #用户的授权类型    AuthType Basic    AuthName DAV-upload    # You can use the htdigest program to create the password database:    #   htdigest-c"/usr/user.passwd"DAV-upload admin    # 用户密码文件    AuthUserFile"/usr/webdav.passwd"AuthDigestProviderfile# Allow universal read-access, but writes are restricted<LimitExcept GET OPTIONS>require user admin</LimitExcept></Directory>
说明:按照上述配置文件,可以通过URL->http://localhost/uploads,将文件上传至/usr/uploads目录上传文件所使用的用户名是:admin3> 保存并退出输入
:wq3. 建立文件夹并配置文件1> 创建admin的密码,在终端中输入:
sudohtpasswd -c /usr/webdav.passwdadmin然后输入admin的密码,密码文件会保存在/usr/webdav.passwd中2> 设置webdav.passwd权限
sudochgrpwww /usr/webdav.passwd3> 建立var文件夹,以保存DavLockDB相关文件
sudomkdir-p /usr[img]file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\[LC3U)F{0XCAB)LKNIT0K@G.gif[/img]arsudochown-R www:www /usr[img]file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\[LC3U)F{0XCAB)LKNIT0K@G.gif[/img]ar 4> 建立上传文件夹:uploads
sudomkdir-p /usr/uploadssudochown-R www:www /usr/uploads5> 重新启动Apache
sudoapachectl -k restart4. 测试打开Finder,在菜单中选择“前往”“连接服务器”,在地址栏中输入:http://localhost/uploads然后用户名admin及在终端设置的密码,连接至服务器,并测试更新文件。 二. 使用NSURLSessionUploadTask实现文件上传
-(IBAction)uploadFile{//要上传的文件UIImage *image = [UIImage imageNamed"123.jpg"];    NSData*imageData = UIImageJPEGRepresentation(image,1.0f);//上传的文件名NSString *urlString =@"http://localhost/uploads/demo.jpg";    urlString=[urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];        NSURL*url =[NSURL URLWithString:urlString];    NSMutableURLRequest* request =[NSMutableURLRequest requestWithURL:url];//使用PUT方法[request setHTTPMethod"UT"];//用户授权NSString *basicAuthCredentials = [NSString stringWithFormat"%@:%@",@"admin",@"123"];    NSString*authValue = [NSString stringWithFormat:@"Basic %@", AFBase64EncodedStringFromString(basicAuthCredentials)];    [request setValue:authValue forHTTPHeaderField:@"Authorization"];    [request setHTTPBody: imageData];    [request setValue:@"image/jpg"forHTTPHeaderField:@"Content-Type"];    [request setValue:[NSString stringWithFormat:@"%d", [imageData length]] forHTTPHeaderField:@"Content-Length"];//URLSessionNSURLSession *session =[NSURLSession sharedSession];//上传任务NSURLSessionUploadTask *task = [session uploadTaskWithRequest:request fromData:imageData completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {if(!data) {            NSString*result =[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];            NSLog(@"%@ %@", result, response);        }else{            NSLog(@"upload ok!");        }    }];        [task resume];}
[img]file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\TempPic\NHZ9C28N%SI[K8455497H8T.tmp[/img]另外,还需要一个对字符串进行Base64编码的方法,代码如下:
staticNSString *AFBase64EncodedStringFromString(NSString *string){    NSData*data = [NSData dataWithBytes:[stringUTF8String] length:[stringlengthOfBytesUsingEncoding:NSUTF8StringEncoding]];    NSUInteger length=[data length];    NSMutableData*mutableData = [NSMutableData dataWithLength(length +2) /3) *4];        uint8_t*input = (uint8_t *)[data bytes];    uint8_t*output = (uint8_t *)[mutableData mutableBytes];for(NSUInteger i =0; i < length; i +=3) {        NSUInteger value=0;for(NSUInteger j = i; j < (i +3); j++) {            value<<=8;if(j <length) {                value|= (0xFF&input[j]);            }        }staticuint8_tconstkAFBase64EncodingTable[] ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";                NSUInteger idx= (i /3) *4;        output[idx+0] = kAFBase64EncodingTable[(value >>18) &0x3F];        output[idx+1] = kAFBase64EncodingTable[(value >>12) &0x3F];        output[idx+2] = (i +1) < length ? kAFBase64EncodingTable[(value >>6)  &0x3F] :'=';        output[idx+3] = (i +2) < length ? kAFBase64EncodingTable[(value >>0)  &0x3F] :'=';    }return[[NSString alloc] initWithData:mutableData encoding:NSASCIIStringEncoding];}
分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友

返回列表

站长推荐 关闭


黑发清纯萌妹脸部插画绘制教程

原画插画教程_黑发清纯萌妹脸部插画绘制教程 黑发清纯萌妹脸部教程-奇幻插画 1.用色块铺出脸部脖子和头发,脸部定好边缘形状 2.用皮肤深色的色块定出五官 ...


查看

无觅相关文章插件