IOS开发教程之put上传文件的服务器的配置及实例分享

sdoa4441125

sdoa4441125

2016-02-19 11:27

最近很多朋友喜欢上设计,但是大家却不知道如何去做,别担心有图老师给你解答,史上最全最棒的详细解说让你一看就懂。

1,HTTP常见的方法

GET 获取指定资源

POST 2M 向指定资源提交数据进行处理请求,在RESTful风格中用于新增资源 HEAD 获取指定资源头部信息
PUT 替换指定资源(不支持浏览器操作)
DELETE 删除指定资源

2,配置服务器的put请求方式:
代码如下:

  1

n 打开终端
p cd /etc/apache2
p sudo vim httpd.conf

n 在vim中输入
p /httpd-dav.conf
• 查找httpd-dav.conf
p 按0将光标移动至行首 p 按x将行首的#删除
p 输入:wq,保存并退出
  2

在终端继续输入
 cd /etc/apache2/extra
 sudo vim httpd-dav.conf

  在vim中将右图中第一处标红位置 的Digest修改为Basic

  输入:wq,保存并退出

  提示:

  修改的是用户授权的方式

  第二处标红位置是保存用户密码 的文件(/user/user.passwd)

  第三处标红位置是能够使 用PUT请求的用户名(admin)

 4

在终端输入 p cd /usr

  sudo htpasswd -c /usr/user.passwd admin

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

  ls-l

 sudo chgrp www /usr/user.passwd

  ls-l

  5
建立var文件夹,保存DavLockDB相关文件 n sudo mkdir -p /usr/var
 sudo chown -R www:www /usr/var

  建立上传文件夹:uploads
 sudo mkdir -p /usr/uploads
 sudo chown -R www:www /usr/uploads

  重新启动Apache
 sudo apachectl -k restart

   6当看到这个时就表示配置正确

  修改后用ls -l查看的示意图如下
  如果能看到这三个就表示配置正确
      uploads
      user.passwd
      var

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/bianchengyuyan/)

实例:

代码如下:

#import "KUViewController.h"
#import "KUProgress.h"
@interfaceKUViewController ()NSURLSessionTaskDelegate
//下载进度的类,继承UIview
@property (weak, nonatomic) IBOutlet  KUProgress *progressView;

@end

@implementation KUViewController

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

/**
 *  用PUT方法上传文件,不经过浏览器传递
 */
-(void)putFile
{
   //1,url(协议+主机名+路径+保存到服务器的文件名)
     // post:url  (协议+主机名+上传的服务器的程序)
    NSString *urlStr = @"http://localhosthttp://img.warting.com/046.Post提交用户隐私数据&MD5加密.mp4";
      //1.1编码格式
    urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *url = [NSURL URLWithString:urlStr];

    //2,request 请求(默认是get)
    NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url];
      //1httpMethod
    request.HTTPMethod = @"PUT";
      //2网络请求授权
    /**
        BASE64目前在网络上最流行的一种编码方式,可以将二进制的数据转换成字符串,对方接受到之后,可以再讲字符串转换成二进制文件
        BASE64可以编码,也可以解码

      授权格式:
      (1)授权字符串格式:用户名:口令
      (2)授权模式:Basic Base64编码的授权字符串
      (3)位HTTPHEADERField的Authorization赋值

     */
    NSString *authStr = @"admin:admin";
    //将字符串转换成 Base64
     authStr = [self authBase64:authStr];
    //转换成第二部的
    NSString *authBase64 = [NSString stringWithFormat:@"Basic %@",authStr];
    //转换成第三部
    [request setValue:authBase64 forHTTPHeaderField:@"Authorization"];

    //3,session
      //1.创建会话机制
    NSURLSessionConfiguration *config = [NSURLSessionConfigurationdefaultSessionConfiguration];
  NSURLSession *session =  [NSURLSessionsessionWithConfiguration:config delegate:selfdelegateQueue:[[NSOperationQueuealloc] init]];

    //2 上传任务
    //上传的文件的路径
    NSURL *fileUrl =   [[NSBundle mainBundle] URLForResource:@"01.Post提交用户隐私数据&MD5加密.mp4" withExtension:nil];
    [[session uploadTaskWithRequest:request fromFile:fileUrl] resume];

//   这是不用下载进度条的方法。
//    NSURLSessionUploadTask *task = [session uploadTaskWithRequest:request fromFile:fileUrl completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
//       
//        //把二进制数据转换成字符串
//      NSString *str =  [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
//        NSLog(@"str = %@",str);
//    }];
//

}

#pragma mark -- 代理方法

-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didSendBodyData:(int64_t)bytesSent totalBytesSent:(int64_t)totalBytesSent totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend
{
    CGFloat value = (CGFloat)totalBytesSent / totalBytesExpectedToSend;
   // [NSThread sleepForTimeInterval:0.2];
    [[NSOperationQueuemainQueue] addOperationWithBlock:^{
         self.progressView.progress = value;
    }];

    NSLog(@"下载进度;value = %.03lf",value);
}

-(void)URLSession:(NSURLSession *)session didBecomeInvalidWithError:(NSError *)error
{
    NSLog(@"上传失败");
}
//转换成Base64编码授权字符串
-(NSString *)authBase64:(NSString *)authStr
{

    //将字符串转换成二进制数局
    NSData *data = [authStr dataUsingEncoding:NSUTF8StringEncoding];
    return [data base64EncodedStringWithOptions:0];
}

展开更多 50%)
分享

猜你喜欢

IOS开发教程之put上传文件的服务器的配置及实例分享

编程语言 网络编程
IOS开发教程之put上传文件的服务器的配置及实例分享

samba服务器的文件共享配置

Linux Linux命令 Linux安装 Linux编程 Linux桌面 Linux软件 Linux内核 Linux管理
samba服务器的文件共享配置

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

在CentOS服务器上配置NTP服务器的教程

服务器
在CentOS服务器上配置NTP服务器的教程

《饥荒》搭建服务器图文配置教程分享

饥荒
《饥荒》搭建服务器图文配置教程分享

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何将我的文件上传到服务器?

Web开发
如何将我的文件上传到服务器?

Apache Web服务器.htaccess文件配置

服务器
Apache Web服务器.htaccess文件配置

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

AJAX 缓存问题的两种解决方法(IE)

AJAX 缓存问题的两种解决方法(IE)

非常不错的不间断循环滚动类 兼容多浏览器

非常不错的不间断循环滚动类 兼容多浏览器
下拉加载更多内容 ↓