热门标签 | 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开发环境。 ... [详细]
  • 在Linux系统上构建Web服务器的详细步骤
    本文详细介绍了如何在Linux系统上搭建Web服务器的过程,包括安装Apache、PHP和MySQL等关键组件,以及遇到的一些常见问题及其解决方案。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 本文介绍了如何使用JavaScript的Fetch API与Express服务器进行交互,涵盖了GET、POST、PUT和DELETE请求的实现,并展示了如何处理JSON响应。 ... [详细]
  • 本文详细介绍了如何检查和配置电脑上的PHP环境,包括位数、运行支持以及文件格式的打开方式。适合初学者了解PHP的基础知识和操作方法。 ... [详细]
  • CentOS 7.6环境下Prometheus与Grafana的集成部署指南
    本文旨在提供一套详细的步骤,指导读者如何在CentOS 7.6操作系统上成功安装和配置Prometheus 2.17.1及Grafana 6.7.2-1,实现高效的数据监控与可视化。 ... [详细]
  • 深入解析:OpenShift Origin环境下的Kubernetes Spark Operator
    本文探讨了如何在OpenShift Origin平台上利用Kubernetes Spark Operator来管理和部署Apache Spark集群与应用。作为Radanalytics.io项目的一部分,这一开源工具为大数据处理提供了强大的支持。 ... [详细]
  • 深入解析BookKeeper的设计与应用场景
    本文介绍了由Yahoo在2009年开发并于2011年开源的BookKeeper技术。BookKeeper是一种高效且可靠的日志流存储解决方案,广泛应用于需要高性能和强数据持久性的场景。 ... [详细]
  • 请看|间隔时间_Postgresql 主从复制 ... [详细]
  • NFS(Network File System)即网络文件系统,是一种分布式文件系统协议,主要用于Unix和类Unix系统之间的文件共享。本文详细介绍NFS的配置文件/etc/exports和相关服务配置,帮助读者理解如何在Linux环境中配置NFS客户端。 ... [详细]
  • 本文介绍如何在Linux系统中卸载预装的OpenJDK,安装指定版本的JDK 1.8,并配置防火墙以确保系统安全性和软件兼容性。 ... [详细]
  • 本文探讨了大型服务端开发过程中常见的几个误区,包括异步任务处理不当、日志同步模式使用、网络操作未设置超时、缓存命中率及响应时间未统计、单一缓存模式、分布式缓存加锁不当以及团队管理上的误区,旨在帮助开发者避免这些常见错误。 ... [详细]
  • 本文将详细介绍如何在ThinkPHP6框架中实现多数据库的部署,包括读写分离的策略,以及如何通过负载均衡和MySQL同步技术优化数据库性能。 ... [详细]
  • 使用LVS与ldirectord实现高可用负载均衡
    本文介绍了如何通过LVS(Linux Virtual Server)结合ldirectord工具来实现服务器的健康检查及负载均衡功能。环境设置包括一个LVS节点和两个真实服务器节点,通过配置ldirectord进行健康状态监测,确保系统的高可用性。 ... [详细]
  • APM(Application Performance Management,应用性能管理)对于提供互联网服务的企业至关重要。本文将深入探讨APM如何帮助识别和解决导致用户流失的技术问题,以及它在提升整体用户体验方面的作用。 ... [详细]
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社区 版权所有