热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

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

IOS开发给人一种高大上的赶脚,弄的好像你不会IOS就不是个合格的程序员一样,好吧,既然是大趋势,那我们就来学习下吧,今天来看看put上传文件的服务器配置及案例

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

  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

实例:

代码如下:

#import "KUViewController.h"
#import "KUProgress.h"
@interfaceKUViewController ()
//下载进度的类,继承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://localhost/uploads/046.Post提交用户隐私数据&MD5加密.mp4";
      //1.1编码格式
    urlStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSURL *url = [NSURL URLWithString:urlStr];

    //2,request 请求(默认是get)
    NSMutableURLRequest *request = [NSMutableURLRequestrequestWithURL:url];
      //1>httpMethod
    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];
}


推荐阅读
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • 本文详细介绍了 Dockerfile 的编写方法及其在网络配置中的应用,涵盖基础指令、镜像构建与发布流程,并深入探讨了 Docker 的默认网络、容器互联及自定义网络的实现。 ... [详细]
  • 本文探讨了 RESTful API 和传统接口之间的关键差异,解释了为什么 RESTful API 在设计和实现上具有独特的优势。 ... [详细]
  • 本文详细分析了Hive在启动过程中遇到的权限拒绝错误,并提供了多种解决方案,包括调整文件权限、用户组设置以及环境变量配置等。 ... [详细]
  • 本文探讨了如何优化和正确配置Kafka Streams应用程序以确保准确的状态存储查询。通过调整配置参数和代码逻辑,可以有效解决数据不一致的问题。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • PHP 5.5.0rc1 发布:深入解析 Zend OPcache
    2013年5月9日,PHP官方发布了PHP 5.5.0rc1和PHP 5.4.15正式版,这两个版本均支持64位环境。本文将详细介绍Zend OPcache的功能及其在Windows环境下的配置与测试。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • 本文详细介绍如何通过修改配置文件来隐藏Apache、Nginx和PHP的版本号,从而增强网站的安全性。我们将提供具体的配置步骤,并解释这些设置的重要性。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • PHP 过滤器详解
    本文深入探讨了 PHP 中的过滤器机制,包括常见的 $_SERVER 变量、filter_has_var() 函数、filter_id() 函数、filter_input() 函数及其数组形式、filter_list() 函数以及 filter_var() 和其数组形式。同时,详细介绍了各种过滤器的用途和用法。 ... [详细]
  • 在成功安装和测试MySQL及Apache之后,接下来的步骤是安装PHP。为了确保安全性和配置的一致性,建议在安装PHP前先停止MySQL和Apache服务,并将MySQL集成到PHP中。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 本文介绍了如何使用JavaScript的Fetch API与Express服务器进行交互,涵盖了GET、POST、PUT和DELETE请求的实现,并展示了如何处理JSON响应。 ... [详细]
author-avatar
mmmmmmmmmm0000
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有